使用 VBA 将 Sheet.Range 大小调整为大型一维数组
Resize Sheet.Range to Large 1D Array with VBA
希望这不是重复的 post,但我一直无法找到我的问题的答案。下面的代码是我目前的代码 运行,但我正在尝试优化打印一维数组的最后一位,myArray
,包含 100,000 行数据,到名为 sheet 的shHidden
.
目的是通过拆分字符串、解析数组元素,然后将它们放入第二个数组来使用数组解析字符串。从那里,第二个数组将被打印到两个位置; 1) 通过 Join() 的另一个字符串,和 2) 作品sheet.
SplitTextBox1 = Split(shInterface.txt_Input, Chr(10))
j = 0
For i = 0 To UBound(SplitTextBox1)
j = j + 1
ReDim Preserve MyArray(j)
MyArray(j) = SplitTextBox1(i)
Next i
shInterface.txt_Output = Join(MyArray)
这就是我挣扎的地方。我想将 myArray
打印到 shHidden
以便稍后可以将其保存为 .CSV,但是 shHidden.Range("A1") .Resize(j) = myArray
的每个变体仅将 myArray
的第一个元素打印到shHidden.
的每个单元格
这就是我目前所做的,
For i = 1 To UBound(MyArray)
shHidden.Range("A" & i) = MyArray(i)
Next i
与看起来像的东西相反,
shHidden.Range("B1").Resize(i) = MyArray
我已经尝试 Transposing
阵列,但它没有发送 100% 的阵列。
我做错了什么?
未经测试但应该接近:
Dim arr, i As Long, SplitTextBox1
SplitTextBox1 = Split(shInterface.txt_Input, Chr(10))
ReDim arr(1 To UBound(SplitTextBox1) + 1, 1 To 1)
For i = 0 To UBound(SplitTextBox1)
arr(i + 1, 1) = SplitTextBox1(i)
Next i
shInterface.txt_Output = Join(SplitTextBox1)
shHidden.Range("A1").Resize(UBound(arr, 1), 1).Value = arr
希望这不是重复的 post,但我一直无法找到我的问题的答案。下面的代码是我目前的代码 运行,但我正在尝试优化打印一维数组的最后一位,myArray
,包含 100,000 行数据,到名为 sheet 的shHidden
.
目的是通过拆分字符串、解析数组元素,然后将它们放入第二个数组来使用数组解析字符串。从那里,第二个数组将被打印到两个位置; 1) 通过 Join() 的另一个字符串,和 2) 作品sheet.
SplitTextBox1 = Split(shInterface.txt_Input, Chr(10))
j = 0
For i = 0 To UBound(SplitTextBox1)
j = j + 1
ReDim Preserve MyArray(j)
MyArray(j) = SplitTextBox1(i)
Next i
shInterface.txt_Output = Join(MyArray)
这就是我挣扎的地方。我想将 myArray
打印到 shHidden
以便稍后可以将其保存为 .CSV,但是 shHidden.Range("A1") .Resize(j) = myArray
的每个变体仅将 myArray
的第一个元素打印到shHidden.
这就是我目前所做的,
For i = 1 To UBound(MyArray)
shHidden.Range("A" & i) = MyArray(i)
Next i
与看起来像的东西相反,
shHidden.Range("B1").Resize(i) = MyArray
我已经尝试 Transposing
阵列,但它没有发送 100% 的阵列。
我做错了什么?
未经测试但应该接近:
Dim arr, i As Long, SplitTextBox1
SplitTextBox1 = Split(shInterface.txt_Input, Chr(10))
ReDim arr(1 To UBound(SplitTextBox1) + 1, 1 To 1)
For i = 0 To UBound(SplitTextBox1)
arr(i + 1, 1) = SplitTextBox1(i)
Next i
shInterface.txt_Output = Join(SplitTextBox1)
shHidden.Range("A1").Resize(UBound(arr, 1), 1).Value = arr