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

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

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

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: макрос для расчета и записи в двумерный массив, после вставки массива на лист  (Прочитано 2724 раз)
0 Пользователей и 1 Гость смотрят эту тему.
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #41799: 4 Май 2017, 14:51 »

Добро пожаловать на форум!
Наверное, имелось в виду что-то в этом роде:
Код:
Sub twoSet
Dim oSheets As Variant ' Все листы текущей книги
Dim oSheet As Variant ' Один, рабочий лист (Кстати, почему именно 13-ый?)
Dim oRange As Variant ' Диапазон ячеек с таблицей (включая и заголовки строк/колонок)
Dim oDataArray As Variant ' Все данные этого диапазона
Dim oFrstRow As Variant ' Массив значений из заголовков колонок (первая строка таблицы)
Dim oData As Variant ' Одна строка таблицы (массив)
Dim i&, j& ' Индексы циклов
oSheets = ThisComponent.getSheets()
oSheet = oSheets.getByIndex(13)
oRange = oSheet.getCellRangeByPosition(2, 13, 80, 91) ' Диапазон $C$14:$CC$92. Или нужен другой?
oDataArray = oRange.getDataArray() ' Данные всех ячеек диапазона в массиве массивов
oFrstRow = oDataArray(0) ' Первая строка, значения в заголовках колонок
For i = LBound(oDataArray)+1 To UBound(oDataArray) ' По всем строкам, начиная со второй
oData = oDataArray(i) ' Очередная строка, значение в заголовке строки и результаты
For j = LBound(oData)+1 To UBound(oData) ' По всем ячейкам этой строки, начиная со второй
oData(j) = Val(oData(0)) * Val(oFrstRow(j)) ' Попробуй догадаться, что на что здесь умножается
Next j
oDataArray(i) = oData ' Вернули пересчитанную строку на её место в общем массиве
Next i
oRange.setDataArray(oDataArray) ' Вписали содержимое массива обратно в диапазон на листе
End Sub
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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