總結:
由於我使用的是進入了一個電池在工作表用戶定義的函數,我不能將數據導出到任何地方,但該單元格。但是,我可以在即時窗口中查看數組。
在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