我在VBA非常业余,所以代码可能不会留下深刻印象。情况是这样的:
我有一个例程,它从文本文件中导入一个由波形符分隔的信息表。我需要将它传递给我打开文件上的工作表。问题是一些列元素是字符串,其他列号。所以我认为一个解决方法是将我创建的第一个数组(BFarr)中的值重新用于可以转储到工作表上相关列中的较小数组中。
我从一个只有小整数的列开始。我最终得到了下面可能相当奇怪的代码。这可以达到一定的目的,因为使用Msgbox
告诉我正确的数字在新数组(bfb)中出现。
为什么在将数组转储到工作表时只会得到零?
Sub BFudnew()
Dim x As TextStream
Dim BFarr(1 To 3000, 1 To 6) As Variant
Dim bfb(1 To 3000) As Integer
BFile = Sheets("Data").Range("Data_GAM").Value
Set fs = CreateObject("Scripting.FileSystemObject")
Set x = fs.OpenTextFile(BFile)
y = x.ReadAll
Z = Split(y, Chr(10))
For n = 0 To UBound(Z)
BFsq = BFsq + 1
A = Split(Z(n), "~")
For o = 0 To UBound(A)
BFarr(BFsq, o + 1) = A(o)
Next o
Next n
For n = 1 To 3000
BFval = Val(BFarr(n, 5))
BFval = CInt(BFval)
bfb(n) = BFval
Next n
Sheets("Cards").Range("E1:E3000") = bfb
x.Close
End Sub
答案 0 :(得分:0)
尝试在将数组粘贴到工作表之前转置数组:
Sheets("Cards").Range("E1:E3000") = Application.WorksheetFunction.Transpose(bfb)
答案 1 :(得分:0)
如果你知道它会进入一个列,你可以简单地使用2D数组开始:
Dim bfb(1 To 3000, 1 to 1) As Integer
并改变这一点:
bfb(n) = BFval
到此:
bfb(n, 1) = BFval