VBA&Excel: быстрый перенос массива в диапазон

Программирование на Visual Basic for Applications
Nanotronic
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 19.12.2006 (Вт) 18:11

VBA&Excel: быстрый перенос массива в диапазон

Сообщение Nanotronic » 19.12.2006 (Вт) 18:25

Привет!

Не получается решить свою задачу по subj'у.

Есть тип:

Код: Выделить всё
Private Type DATA_type
    var1 As String
    var2 As Integer
    var3 As Integer
    var4 As Boolean
     
End Type

Dim data() As DATA_type

Private Sub CommandButton1_Click()
DIM TheRange as Range

'<заполняю масиив>

'<хочу быстро перенести данные на рабочий лист>

Set TheRange = ActiveCell.Range (Cells(1,1), Cells (10,10))

TheRange.Value = data()


При отработке сваливается с такой ошибкой:
Compile error

Only user-defined types defined in public object can be coerced to or from a variant or passed to late-bound functions


Как победить ситуацию - я не знаю :(.
Ковырял разные способы, но рабочего не нашел.
Заполнять каждую ячейку данными, в моем случае, очень долго.

Помогите, pls, в какую сторону копать?

Был бы признателен примерам.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.12.2006 (Вт) 18:39

Хотелось бы представить, как подобная структура теортически может лечь на такой диапазон. Но не получится, и слава богу, на сон-то грядущий...

RTFM!

Dim data() As variant
redim data(1 to 10, 1 to 10)
<>
TheRange.Value = data
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Nanotronic
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 19.12.2006 (Вт) 18:11

Сообщение Nanotronic » 19.12.2006 (Вт) 18:57

С variant прокатит - знаю. Спасибо, что ответили!

С типизированными полями легко работать - не спутаешь, какие данные заполняешь.

Как быть с собственными типами/структурами?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.12.2006 (Вт) 19:34

Как ты себе представляешь помещение сразу 4 записей структуры в 1 ячейку?.. Или ты думал, что члены структуры чудесным образом превращаются в отдельные элементы массива? А они таки не превращаются.
Одна ячейка листа - один элемент массива. А если у элемента ещё 4 подэлемента, что с ним делать в рамках этой одной ячейки, не знает никто. Я вот не знаю. Знаю, что если УДОБНО, то смирись со скоростью, а если надо скорость, то сделай так, чтобы было удобно с variant(). Это несложно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 20.12.2006 (Ср) 12:13

как один из вариантов, создать отсоединенный рекордсет
и потом CopyFromRecordset
I Have Nine Lives You Have One Only
THINK!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 89

    TopList