Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/64: Рейтинг темы: голосов - 64, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 14
1

Присвоить диапазон данных excel массиву

18.04.2012, 15:28. Показов 12269. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В VBA, работая с объектами excel : range, cells и тд, столкнулся с проблемой, не получается безошибочно присвоить область range массиву, для дальнейший операции с совместным участием как областей range, так и массивов находящихся в оперативной памяти.

Прикладываю пример, в нем необходимо данные области rng2, которые хранятся в ячейках листа, держать в оперативной памяти, и во втором действии делать умножения используя данные с листа excel и данных хранящихся в оперативной памяти
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
a = Range("h1")
   Dim rng As Range, rng2 As Range, rng3 As Range, rng4 As Range
    n = a + 1
    m = a
   Range(Cells(6, 2), Cells(n + 5, m + 1)).Activate
   Set rng = Range(Cells(6, 2), Cells(n + 6, m))
   Set rng2 = Range(Cells(n + 10, 2), Cells(n + 10, m + 1))
    Dim p As Double, k As Double, l As Double
    p = 0
    For j = 1 To m
        For i = 1 To n
            p = p - rng.Cells(i, j)
            p = Abs(p)
        Next i
        rng2.Cells(j) = p
        p = 0
    Next j
Set rng4 = Range(Cells(n + 11, 2), Cells(n + 11, m + 1))
Set rng3 = Range(Cells(n + 9, 2), Cells(n + 9, m + 1))
    p = 0
For j = 1 To m
p = rng2.Cells(j) * rng3.Cells(j)
rng4.Cells(j) = p
Next j
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2012, 15:28
Ответы с готовыми решениями:

Не получается присвоить объекту Series диапазон данных с листа
Не получается присвоить объекту Series диапазон данных с листа Private Sub...

Как удалить диапазон данных в MS Excel по условию?
Всем привет! Помогите решить задачу (пример файла приложен). 1) Требуется , чтобы при удалении...

Как присвоить массиву значения из ячеек и наоборот?
как присвоить массиву значения из ячеек и наоборот ?

Excel VBA. Не присваиваются значения массиву
Доброго времени суток всем! Коротко о главном: В Функции, располагающейся в ЭтаКнига необходимо...

4
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
18.04.2012, 15:45 2
Есть вариант, когда a объявлена как Variant, обращаться к ней как к массиву:
Visual Basic
1
2
3
a = Range("h1").Value
n = a(1,1) + 1
m = a(1,1)
А есть вариант записать одно значение нужного типа, например Long:
Visual Basic
1
2
3
a = Cells(1, 8).Value ' Потому что h - это восьмой столбец
n = a + 1
m = a
0
5612 / 1596 / 414
Регистрация: 23.12.2010
Сообщений: 2,392
Записей в блоге: 1
18.04.2012, 15:53 3
В примере нет ни одного массива, находящегося в оперативной памяти отдельно от данных листа.
rng , rng2 , rng3, rng4 - объектные переменные, обращающиеся к диапазонам листа.
0
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
18.04.2012, 15:54 4
Цитата Сообщение от mc-black Посмотреть сообщение
Есть вариант, когда a объявлена как Variant, обращаться к ней как к массиву:
a = Range("h1").Value
n = a(1,1) + 1
m = a(1,1)
Не работает! Значение одной ячейки - не массив!
Для унификации работы с диапазоном, который может состоять из одной ячейки, можно так:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub bb()
Dim a
a = Selection.Value
If Not IsArray(a) Then
    ReDim a(1 To 1, 1 To 1)
    a(1, 1) = Selection.Value
End If
'a - всегда массив
End Sub
1
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
18.04.2012, 16:03 5
Казанский, спасибо, не знал и не догадывался об этой "тонкости", ты прав.
0
18.04.2012, 16:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2012, 16:03
Помогаю со студенческими работами здесь

Combobox и диапазон ячеек в Excel
Используется лист1 экселя, как миниатюрная база данных. На листе2 есть списки с данными, которые...

Выделить диапазон ячеек в Excel
Помогите люди добрые! Нужно написать макрос в Excel. Задание следующее - Выделить диапазон ячеек и...

Таблицу преобразовать в диапазон excel
Всем доброго времени суток. Как преобразовать таблицу на листе в диапазон с помощью макроса....

Именованный диапазон в VBA Excel
Как создать именованный диапазон в VBA Excel(при нажатии на этот диапазон выскакивает форма), да...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru