Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

30 Октябрь 2020, 22:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Адрес диапазона  (Прочитано 829 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Denis_Oleynikof
Участник
**
Offline Offline

Сообщений: 25


« Стартовое сообщение: 30 Сентябрь 2020, 07:08 »

Добрый день. Опять вопрос новичка.
Делаю
   Dim chartDataRange As Range
   Set chartDataRange = Range(chartDataSheet.Cells(1, 1), chartDataSheet.Cells(DATA_ROWS_COUNT, columnsCount))

т.е. задаю для диапазона номера ячеек.
А как мне вывести адрес диапазона в виде "A1:D6" ?
Записан
Denis_Oleynikof
Участник
**
Offline Offline

Сообщений: 25


« Ответ #1: 30 Сентябрь 2020, 07:14 »

Сам спросил, сам и нашел
Например так
Function Text_Rng(oRange As Range) As String
    Text_Rng = oRange.CellRange.AbsoluteName
End Function
Записан
Denis_Oleynikof
Участник
**
Offline Offline

Сообщений: 25


« Ответ #2: 30 Сентябрь 2020, 11:38 »

Уж не стал делать новую тему, поскольку вопрос тоже про диапазоны.
Подскажите пожалуйста как правильно вставить диапазон данных в диаграмму, но диаграмма на одном листе а данные на другом.
Делаю примерно так (коряво конечно)
    sName = "Остатки денежных средств"
    sDataRng = chartDataRange.CellRange.AbsoluteName
  
    oRect = createObject("com.sun.star.awt.Rectangle")
    oSheet = ThisComponent.sheets(CHARTDATA_SHEET_NAME)
    oAddress = oSheet.getCellRangeByName( sDataRng ).getRangeAddress()
 
    curWorkBook.getSheets().insertNewByName(CHART_SHEET_NAME,0)  
    oSheet  = ThisComponent.sheets(0)
    oCharts = oSheet.getCharts()
    oRect   = createObject("com.sun.star.awt.Rectangle")   oCharts.addNewByName(sName, oRect,Array(oAddress), True, True)
  
   oChart = oCharts.getByName( sName )
   oChart.setRanges(Array(oAddress))
   oChartDoc = oChart.getEmbeddedObject()
   oTitle = oChartDoc.getTitle()
   oTitle.String = sName

В итоге все хорошо создается новый лист, на нем диаграмма, но диапазон у диаграммы текущий лист (не тот на котором данные)
« Последнее редактирование: 30 Сентябрь 2020, 15:08 от Denis_Oleynikof » Записан
Denis_Oleynikof
Участник
**
Offline Offline

Сообщений: 25


« Ответ #3: 30 Сентябрь 2020, 16:59 »

Up-ну если никто не против  В замешательстве
Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 196


WWW
« Ответ #4: 30 Сентябрь 2020, 17:44 »

Возможно, помощь придет быстрее, если Вы приложите пример
Записан

Владимир.
Denis_Oleynikof
Участник
**
Offline Offline

Сообщений: 25


« Ответ #5: 30 Сентябрь 2020, 18:24 »

Ну так я же кусок кода указал
Попробую еще раз с комментами
    Dim chartDataRange As Range
    Set chartDataRange = Range(chartDataSheet.Cells(1, 1), chartDataSheet.Cells(DATA_ROWS_COUNT, columnsCount))
    'chartDataSheet - это страница где находится диапазон данных

    sName = "Остатки денежных средств"
    sDataRng = chartDataRange.CellRange.AbsoluteName
    ' sDataRng - адрес диапазона из страницы chartDataSheet
 
    oRect = createObject("com.sun.star.awt.Rectangle")

    oSheet = ThisComponent.sheets(CHARTDATA_SHEET_NAME)
    ' по сути это oSheet  = chartDataSheet

    oAddress = oSheet.getCellRangeByName( sDataRng ).getRangeAddress()
 
    curWorkBook.getSheets().insertNewByName(CHART_SHEET_NAME,0) 
    '  добавляю новую страницу CHART_SHEET_NAME = "Остатки ДС"

    oSheet  = ThisComponent.sheets(0)
    ' oSheet - присваиваю ее значение

    ' ну а дальше практически из учебника питаньяка
    oCharts = oSheet.getCharts()
    oRect   = createObject("com.sun.star.awt.Rectangle")   
    oCharts.addNewByName(sName, oRect,Array(oAddress), True, True)
 
   oChart = oCharts.getByName( sName )
   oChart.setRanges(Array(oAddress))
   ' вот тут как раз мы устанавливаем в oChart адреса из листа chartDataSheet - это страница где находится диапазон данных
   ' но почему, то  выделяется диапазон на текущем листе (новый созданный) где добавляем диаграмму
   oChartDoc = oChart.getEmbeddedObject()
   oTitle = oChartDoc.getTitle()
   oTitle.String = sName
Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 196


WWW
« Ответ #6: 30 Сентябрь 2020, 18:40 »

У Вас в структуре oAddress номер листа - 0. Затем Вы вставляете новый лист с номером 0. Вставьте лист с номером, например, 1. Или после вставки нового листа поменяйте номер листа в oAddress. Или присваивайте oAddress уже после вставки.
Записан

Владимир.
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!