【问题标题】:Excel VBA: How do I assign a range to a variable?Excel VBA:如何为变量分配范围?
【发布时间】:2018-06-25 07:21:21
【问题描述】:

目前的代码如下:

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

sheetChk 被定义为所需的工作表索引。 chkCell 被定义为范围内所需的“第一个单元格”。

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

【问题讨论】:

  • 不确定你的意思,但也许this 有帮助或更详细here
  • 什么是“chkcell”?范围?如果是这样,“Left(chkCell, 1)”应该做什么?
  • @DisplayName 我猜 OP 正在使用 chkCell 手动输入地址。语法表明它正在获取列地址的第一个字母。 Left(chkCell.Value,1)
  • @PGCodeRider 你是对的。

标签: vba excel


【解决方案1】:

首先要分配一个范围,你需要先有一个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

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

【讨论】:

  • 这成功了。感谢您的意见。我发帖时睡眠对我不利,现在我看到了我的愚蠢错误。
  • 我没有意识到接受按钮在那里。我很抱歉。
【解决方案2】:
dim rng as range
set rng = thisworkbook.sheets("sheet1").range("a1:a666")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 2023-03-03
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多