2017-02-16 10 views
0

У меня есть этот код для хранения значений выбранного диапазона в массиве.Тип Несоответствие в массиве

dim lRow, i as Integer 
dim rngValues() as Variant 

rngValues = thisworkbook.Sheets(2).Range("C2:C" & lRow) 


For i = LBound(rngValues) To UBound(rngValues) 
    Debug.Print rngValues(i) ' this lines returns Type Mismatch error. 
Next i 

После выполнения некоторой модификации с колонкой, я должен вставить его обратно в column.Can, пожалуйста, помогите мне понять это?

+1

'rngValues' - это 2-мерный массив, поэтому' Debug.Print rngValues ​​(i, 1) ' –

+0

Вы пытаетесь сохранить значения диапазона или только сам диапазон? Когда вы сохраняете/загружаете значения в памяти ('Dim rngValues ​​As Variant: rngValues ​​= thisworkbook.Sheets (2) .Range (« C2: C »& lRow) .Value'), это 2-мерное - 1-е измерение:' LBound (rngValues , 1) ', второе измерение:' LBound (rngValues, 2) '. Строки 1-го измерения, Cols - 2-й. – PatricK

+0

@PatricK Я храню значения диапазона :) – ramedju

ответ

3

Edited возвращать значения даты в определенном формате

Как Тим Уильямс уже сказал, ваш rngValues ​​массив является 2D один

Чтобы иметь его как массив 1D можно закодировать следующим образом:

dim lRow A Long, i as Long '<--| expliciltly declare each variable and use Long for row index ones since they can exceed Integer capacity 
dim rngValues as Variant '<--| declare rngValues as a Variant instead as an array of Variant 

rngValues = Application.Transpose(ThisWorkbook.Sheets(2).Range("C2:C" & lRow).Value) '<--| transpose the "columned" values to "rowed" ones suitable for a 1D array 

For i = LBound(rngValues) To UBound(rngValues) 
    Debug.Print Format(rngValues(i),"yyyy/mm/dd") 
Next 
+0

Спасибо. Но знаете ли вы какое-либо обходное решение для моего последнего комментария? – ramedju

+0

См. Отредактированный ответ. С помощью функции Format() вы получаете строку s с датой, отформатированной так, как вам нужно – user3598756

+0

Я добавил этот код, вставив значения в столбец 'Thisworkbook.Sheets (2) .Range (« C2: C »& lRow) = Формат (Application.Transpose (rngValues), "yyyy/mm/dd") ', но он возвращает ошибку несоответствия типа. – ramedju

Смежные вопросы