总结:
由于我使用的是进入了一个电池在工作表用户定义的函数,我不能将数据导出到任何地方,但该单元格。但是,我可以在即时窗口中查看数组。
在MS Excel 2010中,可以在VBA编辑器(Alt + F11)中找到立即窗口,然后单击视图 - >立即窗口(Ctrl + G)。
要我的数组导出到即时窗口我应该进入到这一点我的代码要查看后阵:
Call WriteArrayToImmediateWindow(MyArray)
其中“MYARRAY”是我的数组的名字,不管它是什么。
这将再调用 'WriteArrayToImmediateWindow' 子,其是:
Sub WriteArrayToImmediateWindow(arrSubA As Variant)
Dim rowString As String
Dim iSubA As Long
Dim jSubA As Long
rowString = ""
Debug.Print
Debug.Print "The array is: "
For iSubA = 1 To UBound(arrSubA, 1)
rowString = arrSubA(iSubA, 1)
For jSubA = 2 To UBound(arrSubA, 2)
rowString = rowString & "," & arrSubA(iSubA, jSubA)
Next jSubA
Debug.Print rowString
Next iSubA
End Sub
信用为上述进入User3706920:How to print two dimensional array in Immediate window in VBA?
编辑:
我决定观看阵列中立即窗口并不总是有用的,我需要在Excel中查看数据逗号分隔。如果你想要做同样遵循以下说明:
到数组导出到您应该进入阵列后您的代码这是一个文本文件,要查看:
Call WriteToFile(MyArray)
其中“MYARRAY”又是你想要查看的数组的名称。在“将writeToFile宏如下:
Sub WriteToFile(arrSubA As Variant)
'To export array to a text file
'Setup
Dim FSO As Object
Dim ofs As Object
Dim Output As Variant
Dim rowString As String
Dim iSubA As Long
Dim jSubA As Long
rowString = ""
'Create file
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = FSO.CreateTextFile("C:\Users\" & Environ$("username") & "\Desktop\Array.txt")
oFile.Close
For iSubA = 1 To UBound(arrSubA, 1)
rowString = arrSubA(iSubA, 1)
For jSubA = 2 To UBound(arrSubA, 2)
rowString = rowString & "," & arrSubA(iSubA, jSubA)
Next jSubA
If Len(Dir("C:\Users\" & Environ$("username") & "\Desktop\Array.txt")) > 0 Then
Set ofs = FSO.OpenTextFile("C:\Users\" & Environ$("username") & "\Desktop\Array.txt", 8, True)
End If
ofs.WriteLine rowString
ofs.Close
Next iSubA
End Sub
要快速查看在Excel输出数组没有任何逗号我建议分配下面宏到按钮:
Sub OpenArrayFile()
'To open array text file in Excel
Workbooks.OpenText Filename:="C:\Users\" & Environ$("username") & "\Desktop\Array.txt", Origin:= _
xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
End Sub
希望这是有用的人太!
不,他们不能(除非你想开始搞定时器和/或事件)。从单元中调用的UDF广义上讲只能将值返回给那些相同的单元。但是,您可以将数组输出到即时窗口。 – Rory
感谢您的快速响应。将数组输出到“立即窗口”是什么意思? – j128
你好,我做了很多VBA,这应该是可能的。基于你的问题,我不能告诉你是否试图在单元格中使用VBA函数,就像在“= CheckArray(TestArray)”单元格中一样。如果是这样,那么罗里是正确的,因为你的结果只会发送到你将函数作为公式的单元格。但是您应该可以通过代码中的VBA指定一个范围对象,该范围对象可以指定将结果发送到您需要的任何工作表的单元。 – Palu