Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org
8 Март 2021, 12:01
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Новости
:
Доступно и просто
о работе в офисных пакетах
Начало
Помощь
Поиск
Войти
Регистрация
задать вопрос
Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org
>
Главная категория
>
Basic
> Тема:
Адрес диапазона
Страниц:
1
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Адрес диапазона (Прочитано 2172 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Denis_Oleynikof
Участник
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
Сообщений: 25
Re: Адрес диапазона
«
Ответ #1
:
30 Сентябрь 2020, 07:14 »
Сам спросил, сам и нашел
Например так
Function Text_Rng(oRange As Range) As String
Text_Rng = oRange.CellRange.AbsoluteName
End Function
Записан
Denis_Oleynikof
Участник
Offline
Сообщений: 25
Re: Адрес диапазона
«
Ответ #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
Сообщений: 25
Re: Адрес диапазона
«
Ответ #3
:
30 Сентябрь 2020, 16:59 »
Up-ну если никто не против
Записан
sokol92
Форумчанин
Offline
Пол:
Сообщений: 309
Re: Адрес диапазона
«
Ответ #4
:
30 Сентябрь 2020, 17:44 »
Возможно, помощь придет быстрее, если Вы приложите пример
Записан
Владимир.
Denis_Oleynikof
Участник
Offline
Сообщений: 25
Re: Адрес диапазона
«
Ответ #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
Пол:
Сообщений: 309
Re: Адрес диапазона
«
Ответ #6
:
30 Сентябрь 2020, 18:40 »
У Вас в структуре oAddress номер листа - 0. Затем Вы вставляете новый лист с номером 0. Вставьте лист с номером, например, 1. Или после вставки нового листа поменяйте номер листа в oAddress. Или присваивайте oAddress уже после вставки.
Записан
Владимир.
Страниц:
1
Вверх
Печать
Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org
>
Главная категория
>
Basic
> Тема:
Адрес диапазона
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Новости и события
-----------------------------
=> Новости
-----------------------------
Главная категория
-----------------------------
=> Общее
===> Установка и настройка
=> Writer
=> Calc
=> Base
=> Impress
=> Draw
=> Math
=> Basic
=> Локализация
=> Дополнения и расширения
=> Документация
-----------------------------
Проекты
-----------------------------
=> MyOOo.ru
===> Обсуждение статей
-----------------------------
О форуме и жизни
-----------------------------
=> Разговоры обо всём
=> IT
=> О форуме
Загружается...