How can I print a range variable in the immediate window? Excel VBA

AP1 picture AP1 · Nov 29, 2017 · Viewed 25.4k times · Source

I'm attempting something that should be very simple. However I've just started learning today and and can't quite understand.

This is my code so far:

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

The data that I'm working with is this:

enter image description here

I keep getting the "Run-time error '13': Type mismatch" I googled the error and I'm still unsure of how to fix this. I want to print the variable rng in the immediate window.

Answer

John Coleman picture John Coleman · Nov 29, 2017

You could write a simple sub for something like this:

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

Then PrintRange rng would work as expected.