Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заполнить массив в vba 
:(
    Опции темы
RinOSpro
Дата 7.4.2008, 15:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Знаю что массив можно обьявить 2 способами

Код

Dim i As Variant
Dim A(5) As Byte

Dim B As Variant

A(0) = 61
A(1) = 27
A(2) = 37
A(3) = 44
A(4) = 65
A(5) = 86

B = Array(61, 27, 37, 44, 65,86)



Но если у меня 1000 или 10000 элементов то довольно не удобно писать
A(0) = 98
A(10000) = 5674

а вот в таком массиве нельзя обращаться к каждой ячейке ((

B = Array(61, 27, 37, 44, 65,86)

как лучше сделать помагите плиззз

  Вверх
LOPUH
Дата 8.4.2008, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Растение
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 15.2.2008
Где: Красноярск

Репутация: 3
Всего: 4



 Я думаю не открою Америки,сказав, что такие массивы обычно заполняются программно в цикле..  Поясни откуда ты берешь данные, так как конкретная реализация зависит от того, что служит у тебя источником данных-таблица Excel,БД,текстовый файл, XML-файл..Вариантов море, соответственно столько же может быть и ответов.
Вот частный пример работы с диапазоном в таблице Еxcel, взят из Дж.Уокенбах "Професссиональное программирование на VBA"

 
Код

' Следующий пример считываеn диапазон в массив Variant , выполняет простую операцию умножения 
'над каждым  элементом массива и перемещает массив Variant обратно в диапазон
Option Explicit

Sub RangeToVariant()
Dim UserRange As Range
Dim x As Variant
Dim r As Long, c As Integer
Set UserRange = Range("A1:L600")

'чтение данных
x = Range("A1:L50")

'просмотр массива
For r = 1 To UBound(x, 1)
    For c = 1 To UBound(x, 2)
'       умножение на 2
        x(r, c) = x(r, c) * 2
     Next c
Next r

'Перемещение массива обратно на рабочий лист
Range("A1:L50") = x

End Sub 
 


Это сообщение отредактировал(а) LOPUH - 8.4.2008, 06:10
PM MAIL   Вверх
RinOSpro
Дата 9.4.2008, 13:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











LOPUH - незнаю как у вас в VBA )) но у нас в Delphi массивы можно обьявлять в программе и заполнять тоже.

LOPUH - кароче смысл такой, конечно можно былобы таскать за макросом txt файл с данными но нужно чтобы они были в нутри макроса. 

  Вверх
RockClimber
Дата 10.4.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



Цитата(LOPUH @  8.4.2008,  03:05 Найти цитируемый пост)
 Я думаю не открою Америки,сказав, что такие массивы обычно заполняются программно в цикле.. 


Цитата(RinOSpro @  9.4.2008,  13:41 Найти цитируемый пост)
LOPUH - незнаю как у вас в VBA )) но у нас в Delphi массивы можно обьявлять в программе и заполнять тоже.


Найди 10 отличий...  smile 

А можно поподробнее, что за 
Цитата(RinOSpro @  9.4.2008,  13:41 Найти цитируемый пост)
txt файл с данными
? Если они там в формате csv, то это формат эксель понимает. Открываем файл, берем данные из ячеек...



--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
mihanik
Дата 12.4.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Ну... Как вариант

Код

Private Sub CommandButton1_Click()
     Dim M As Variant

     M = Array(1, 2, 3, 4, 5, 6)

     MsgBox M(2)

     M(3) = 5

     MsgBox M(3)
    
End Sub


В твоём случае это будет удобнее всего.
И к каждой ячейке обращается на запись/чтение...

Добавлено @ 11:21
Цитата

Array Function
      
Returns a Variant containing an array.

Syntax

Array(arglist)

The required arglist argument is a comma-delimited list of values that are assigned to the elements of the array contained within the Variant. If no arguments are specified, an array of zero length is created.

Remarks

The notation used to refer to an element of an array consists of the variable name followed by parentheses containing an index number indicating the desired element. In the following example, the first statement creates a variable named A as a Variant. The second statement assigns an array to variable A. The last statement assigns the value contained in the second array element to another variable.

Dim A As Variant
A = Array(10,20,30)
B = A(2)

The lower bound of an array created using the Array function is determined by the lower bound specified with the Option Base statement, unless Array is qualified with the name of the type library (for example VBA.Array). If qualified with the type-library name, Array is unaffected by Option Base.

Note   A Variant that is not declared as an array can still contain an array. A Variant variable can contain an array of any type, except fixed-length strings and user-defined types. Although a Variant containing an array is conceptually different from an array whose elements are of type Variant, the array elements are accessed in the same way.



Это сообщение отредактировал(а) mihanik - 12.4.2008, 11:26


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0914 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.