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

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

28 Февраль 2017, 04:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Ошибка "Объектная переменная не установлена."  (Прочитано 294 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Doctor_Che
Новичок
*
Offline Offline

Сообщений: 11


« Стартовое сообщение: 27 Декабрь 2016, 14:08 »

Пытаюсь скопировать диапазон в массив и потом обращаться к элементам массива.
Код:
Dim my_range As Object
Dim my_arr(1, 1) As Double

Dim sMsgBox As String

my_range = ThisComponent.Sheets.getByName ("Лист1").getCellRangebyName("A1:B2")
my_arr = my_range.getDataArray()

sMsgBox = my_arr(0, 1)
MsgBox sMsgBox
Получаю ошибку "Объектная переменная не установлена." в строке "sMsgBox = my_arr(0, 1)"
Подскажите в чём проблема?
Записан
economist
Старожил
****
Offline Offline

Сообщений: 421


« Ответ #1: 27 Декабрь 2016, 14:12 »

my_range = ThisComponent.Sheets.getByName ("Лист1").getCellRangebyName("A1:B2")

пробел между getByName и ("Лист1")
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Doctor_Che
Новичок
*
Offline Offline

Сообщений: 11


« Ответ #2: 27 Декабрь 2016, 14:32 »

Ситуацию не исправило...
Ошибка возникает всё равно.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 210


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 27 Декабрь 2016, 14:36 »

.getDataArray() возвращает не двумерный массив, а "массив массивов". Поэтому my_arr нужно описывать как Variant
Код:
Dim my_arr As Variant
А обращаться к элементам двумя последовательными индексами - первая скобка это элемент "внешнего" массива, массива строк, а вторая скобка это индекс ячейки в вложенном массиве, номер колонки:
Код:
sMsgBox = my_arr(0)(1)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Doctor_Che
Новичок
*
Offline Offline

Сообщений: 11


« Ответ #4: 27 Декабрь 2016, 15:08 »

Спасибо. Теперь заработало.
Код:
Dim my_range As Object
Dim my_arr As Variant

Dim sMsgBox As String

my_range = ThisComponent.Sheets.getByName("Лист1").getCellRangebyName("A1:B2")
my_arr = my_range.getDataArray()

sMsgBox = my_arr(0)(1)
MsgBox sMsgBox
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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