Я пытаюсь изменить размер массива Dynami c (Sub rangearray
) с новыми значениями после проверки, есть ли какие-либо значения в исходном массиве> 590. Массив представляет собой одномерный столбец с диапазоном цифр, как показано ниже, всего 1 столбец и несколько строк.
Я пробовал множество возможных решений, но, похоже, ни одно из них не работает. Я могу наблюдать в окне Locals, хотя это одномерный массив, он кажется двухмерным с (1 to 5, 1 to 1)
, и мне удалось получить 620 и 630 в окне сообщения, и я попытался воспроизвести этот код для рабочего листа, но я постоянно получил индекс за пределами допустимого диапазона.
Я был бы признателен, если бы кто-нибудь мог сообщить мне, что мне нужно сделать, чтобы изменить размер массива (скопированного на лист) только с новыми значениями, а не с предыдущими значениями, а также объяснить размер одноразмерного и кратного массива измерений. Я знаю, что с Redim
вы можете изменить только второе измерение, и вот где я немного запутался, одно измерение ниже имеет два измерения или одно кажется двумя, иначе у него будет только одно измерение, которое должно облегчить изменение размера .
Решение, которое работает, но только окно сообщения не рабочий лист
For i = 1 To 5
For j = 1 To 1
If arr(i, j) > 590 Then
MsgBox arr(i, j)
End If
Next j
Next i
Набор данных
590
590
590
620
630
Массив, который не работает, ниже вставьте значение из массива с измененным размером в рабочий лист
Sub rangearray()
Dim arr() As Variant
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim i As Variant
Dim ws2 As Workbook
Set ws2 = Workbooks("PRA.XLSM")
Set ws = Workbooks("PRA.XLSM").Worksheets("Rec")
Set ws1 = Workbooks("PRA.XLSM").Worksheets("CPT")
arr() = ws.Range("a4:a15").Value
For Each i In arr
If i > 590 Then
ReDim arr(i)
arr(i) = i
End If
Next i
ws1.Range("A4:A15").Value = WorksheetFunction.Transpose(arr)
End Sub