Страница 1 из 1
имя переменной
Добавлено: 21 май 2009, 12:46
Tana_L
Добрый день! Мне нужно задать переменные a1, a2, ..., a10, но надо, чтобы цифра бралась не явно, а из значения другой переменной, например, t. Я думала вот так:
Код: Выделить всё
for j=1 to 10
t=cstr(j)
a&t=cells(1,j)
next
но не получается...
Re: имя переменной
Добавлено: 21 май 2009, 12:56
Naeel Maqsudov
И не получится. Так не бывает. Надо испльзовать массив
И можно без циклов обойтись вообще
Dim A as Variant
A=Range("A1:J1").Value
Получится значение типа Variant(1 to 1, 1 to 10)
A(1,1)....A(1,10)
И поверьте, одномерные массивы не будут тут лучше чем VariantArray. Всего-то 10 элементов! Пишите эффективный код.
Re: имя переменной
Добавлено: 21 май 2009, 14:19
Tana_L
Спасибо! Я вариант с массивом пробовала, но при переносе значения "00000018" на другой лист получилось 18. С этим как бороться?
--------------------------------------------------------------------------------
Re: имя переменной
Добавлено: 21 май 2009, 18:08
Naeel Maqsudov
Тут даже тип Variant не поможет.
Тут надо либо а) предварительно ячейкам присвоить формат (см. свойства NumberFormat и NumberFormatLocal),
Но тут не пройдет такой фокус как с Value. Т.е. нельзя написать
fmt = Range("A2:J2").NumberFormat
т.е. придется еще сделать массив форматов
либо б) пользоваться методом Copy
Range("A1:J1").Copy Range("A4")
Re: имя переменной
Добавлено: 21 май 2009, 20:09
Teslenko_EA
Здравствуйте Tana_L.
в дополнение к сказанному:
если не предполагается дальнейшее участие текстовой строки "00000018" в каких либо операциях, добавьте к ней апостроф - ' ("'" & "00000018").
В документе это не будет заметно '00000018, но избавит Вас от автоматической конвертации формата Excel.
Евгений.
Re: имя переменной
Добавлено: 21 май 2009, 23:39
Tana_L
Супер! Спасибо за ответы! Я недавно занимаюсь программированием на VBA. О многих вещех просто понятия не имею, но радует, что то, что вы мне написали, я и пытаюсь делать:
range("A1:J1).copy
range("A4:J4).select
selection.numberFormat="@"
range("A4:J4).Paste
Оказывается, не нужно форматировать диапазон, в который предполагается скопировать данные, и уж точно не надо этого делать между копированием и вставкой, кроме того. необязательно предварительно выделять диапазон для форматирования. И все это можно записать всего 1 строкой!!! Еще раз спасибо!