Excel VBA:如何为变量指定范围?

Excel VBA:如何为变量指定范围?,vba,excel,Vba,Excel,目前的代码如下: With Sheets(sheetChk) a = .Range(chkCell, .Range(Left(chkCell, 1) & Rows.Count).End(xlUp)).Value End With sheetChk定义为所需的图纸索引。 chkCell被定义为范围内所需的“第一个单元格” 我正在尝试为a分配一个范围。问题是,上面的代码完全捕获列中的最后一个单元格。相反,我希望在特定的行结束,因为在需要忽略的所需范围之后,同一列中还有其他数据。我如

目前的代码如下:

With Sheets(sheetChk)
    a = .Range(chkCell, .Range(Left(chkCell, 1) & Rows.Count).End(xlUp)).Value
End With
sheetChk定义为所需的图纸索引。 chkCell被定义为范围内所需的“第一个单元格”


我正在尝试为a分配一个范围。问题是,上面的代码完全捕获列中的最后一个单元格。相反,我希望在特定的行结束,因为在需要忽略的所需范围之后,同一列中还有其他数据。我如何才能做到这一点?

首先要分配一个范围,您需要先设置一个

dim rng as range
set rng = thisworkbook.sheets("sheet1").range("a1:a666")
示例:
设置a=范围(“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

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

不确定您的意思,但可能会有所帮助,或者更详细地说明什么是“chkcell”?射程?如果是这样,“Left(chkCell,1)”应该怎么做?@DisplayName我猜OP是在使用
chkCell
手动输入地址。语法将表示它正在获取列地址的第一个字母<代码>左(chkCell.Value,1)
@pgcodereder您是对的。这成功了。我感谢你的意见。当我发帖时,睡眠对我不利,现在我看到了我愚蠢的错误。我没有意识到接受按钮在那里。我道歉。