Excel VBA:如何为变量分配范围?

时间:2018-05-27 14:21:49

标签: excel vba excel-vba

目前的代码如下:

With Sheets(sheetChk)
    a = .Range(chkCell, .Range(Left(chkCell, 1) & Rows.Count).End(xlUp)).Value
End With

sheetChk被定义为所需的纸张索引。 chkCell被定义为所需的"第一个单元"在范围内。

我正在尝试为 a 指定范围。问题是上面的代码完全抓住了列中的最后一个单元格。相反,我想在特定行结束,因为在需要忽略的所需范围之后,我在同一列中有其他数据。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

首先要指定一个范围,首先需要Set

示例:Set a = Range("A1")

我看到的另一个问题是你最后放了一个.value。这对范围没有意义。

如果要指定特定行,则需要在代码中包含该行,而不是使用end(xlUp)

示例如果是第50行:

With Sheets(sheetChk)
    Set a = .Range(chkCell, .Range(Left(chkCell, 1) & 50).End(xlUp))
End With

您目前使用的是查找正在使用的底行,这听起来并不像您想要的那样。如果你想转向另一个方向(即从起始单元格向下直到有一个空单元格),你可以使用这段代码:

With Sheets(sheetChk)
    Set a = .Range(chkCell, .Range(Left(chkCell, 1) & chkCell.Row).End(xlDown))
End With

根据您的代码,您可能会在任何单元格chkCell中放置一个地址。如果您在该单元格中有行,并假设您从未超过列z,那么您可以使用此代码来查找行:

With Sheets(sheetChk)
    Set a = .Range(chkCell, .Range(Left(chkCell, 1) & Right(chkCell,Len(chkCell)-1))
End With

如果这不起作用,您需要找出一些方法来确定要使用的行。希望有所帮助。

答案 1 :(得分:0)

dim rng as range
set rng = thisworkbook.sheets("sheet1").range("a1:a666")