设置variables结束的VBA范围

我对VBA很陌生,并且正在努力理解一些语法。

例如,我有一个范围从a3:c13 ,我想将其设置为一个variables,所以我可以将它传递给稍后作为表数组。 但是,范围是由用户input的大小来定义的。 它总是以A3开始,它总是包括A:C列,但是我不知道它会走多远。 在这种情况下,我想我会把它设置为:

 With range("a3") table_array = range(.cells(0,0), .End(xlDown).End(xlToRight)).Select End With 

但是,这似乎并不奏效。 我得到一个运行时错误:

Run-time Error '1004': Method '_Default' of object 'Range' failed.

假设列A,B和C具有相同的行数:

 Sub Macro1() Set r = Range("A3") Set table_array = Range(r, r.End(xlDown)).Resize(, 3) End Sub 

您可以在Col A:C中find最后一行,然后构build您的范围?

 Sub Sample() Dim ws As Worksheet Dim LastRow As Long Dim Rng As Range '~~> Change this to the relevant sheet Set ws = ThisWorkbook.Sheets("Sheet1") With ws If Application.WorksheetFunction.CountA(.Cells) <> 0 Then LastRow = .Range("A:C").Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Else LastRow = 1 End If If Not LastRow < 3 Then Set Rng = .Range("A3:C" & LastRow) Debug.Print Rng.Address Else MsgBox "No Data found beyond A3" End If End With End Sub