[英]How can I print a range variable in the immediate window? Excel VBA
我正在嘗試一些非常簡單的事情。 但是,我剛開始學習,並且不太明白。
到目前為止這是我的代碼:
Public Sub getCellData()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Sheets(1)
Dim rng As Range: Set rng = ws.Range(Cells(1, 2), Cells(4, 2))
Debug.Print rng
End Sub
我正在使用的數據是這樣的:
我一直得到“運行時錯誤'13':類型不匹配”我搜索了錯誤,我仍然不確定如何解決這個問題。 我想在即時窗口中打印變量rng。
你可以為這樣的東西寫一個簡單的子:
Sub PrintRange(R As Range, Optional delim As String = ", ")
Dim myRow As Range, V As Variant, i As Long
For Each myRow In R.Rows
ReDim V(1 To myRow.Cells.Count)
For i = 1 To myRow.Cells.Count
V(i) = myRow.Cells(1, i).Value
Next i
Debug.Print Join(V, delim)
Next myRow
End Sub
然后PrintRange rng
將按預期工作。
Range
是一個對象,而不是一個值。 要輸出值,您可以迭代Range
。 另一種方法是在單個行或列上使用Transpose
函數,然后使用Join
獲取Range
中值的數組的String
值。
示例代碼:
Public Sub getCellData()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Sheets(1)
' you need to prefix Cells with ws. to clarify the reference
Dim rng As Range: Set rng = ws.Range(ws.Cells(1, 2), ws.Cells(4, 2))
' you cannot debug print the object itself
'Debug.Print rng
' iterate the range
Dim rngCell As Range
For Each rngCell In rng
Debug.Print rngCell.Value
Next rngCell
' use the Transpose function for a single row or column
Dim strData As String
Dim wsf As WorksheetFunction: Set wsf = Application.WorksheetFunction
strData = Join(wsf.Transpose(rng.Value), ",")
Debug.Print strData
End Sub
注意我已將您的Set rng = ...
更新為:
Set rng = ws.Range(ws.Cells(1, 2), ws.Cells(4, 2))
並添加了ws.
作為Cells
的前綴,以便明確定義引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.