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

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

18.04.2012, 15:28. Показов 12348. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2012, 15:28
Ответы с готовыми решениями:

Не получается присвоить объекту Series диапазон данных с листа
Не получается присвоить объекту Series диапазон данных с листа Private Sub CommandButton1_Click() Dim i As Integer Dim x, y, time...

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

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

4
 Аватар для mc-black
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
 Аватар для KoGG
5615 / 1598 / 415
Регистрация: 23.12.2010
Сообщений: 2,398
Записей в блоге: 1
18.04.2012, 15:53 3
В примере нет ни одного массива, находящегося в оперативной памяти отдельно от данных листа.
rng , rng2 , rng3, rng4 - объектные переменные, обращающиеся к диапазонам листа.
0
15155 / 6428 / 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
 Аватар для mc-black
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
18.04.2012, 16:03 5
Казанский, спасибо, не знал и не догадывался об этой "тонкости", ты прав.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2012, 16:03
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Исследование байт-кода Python: подключаем дизассемблер
stackOverflow 19.02.2025
Многие знают, что Python - интерпретируемый язык, но мало кто задумывается о том, что происходит между написанием кода и его выполнением. На самом деле Python использует промежуточное представление. . .
Исследование байт-кода Python: компиляторы против интерпретаторов
stackOverflow 19.02.2025
Понимание байт-кода Python - основополагающий аспект для разработчиков, стремящихся глубже понять внутренние механизмы языка и оптимизировать производительность своих программ. Байт-код представляет. . .
Comprehensions в Python - что это такое?
stackOverflow 19.02.2025
Когда речь заходит о Python, одной из его самых красивых и мощных возможностей являются списковые включения или comprehensions. Это особые синтаксические конструкции, позволяющие создавать новые. . .
Python правда такой медленный? Развенчиваем миф о медлительности
stackOverflow 19.02.2025
Когда речь заходит о выборе языка программирования для нового проекта, вопрос производительности часто становится одним из ключевых факторов. Python, несмотря на свою популярность и простоту. . .
Динамические формы в Flask
stackOverflow 19.02.2025
Работа с веб-формами часто требует гибкости в отношении количества полей, которые пользователь может заполнить. Представьте ситуацию, когда вам нужно создать форму для ввода контактных данных, где у. . .
Обнаружение объектов в реальном времени на Raspberry Pi с OpenCV и Movidius NCS
stackOverflow 19.02.2025
Технология обнаружения объектов в реальном времени становится все более востребованной в различных областях - от систем безопасности до автономных транспортных средств. Особый интерес представляет. . .
где chromium хранит пароли и как их обнулить в пожарном варианте
jigi33 19.02.2025
Where is the chromium browser stores passwords for a sites где chromium-подобный браузер хранит пароли и как их обнулить в пожарном варианте (see screenshot)
howto get access to external internet resources with kinit
jigi33 19.02.2025
Решение проблемы с необходимостью доп. авторизации по Керберос для автоотработки аутентификации на прокси-сервер (see screenshot)
Отслеживание автомобилей и определение скорости с OpenCV и Python на Raspberry Pi
stackOverflow 19.02.2025
В этой статье мы рассмотрим создание системы отслеживания транспортных средств и определения их скорости с использованием компьютерного зрения и библиотеки OpenCV. Наше решение основано на принципе. . .
ENV (environments) valid paths in linux
jigi33 19.02.2025
Environments paths (see screenshot)
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru