【问题标题】:Excel VBA: Selecting Different Ranges in LoopExcel VBA:在循环中选择不同的范围
【发布时间】:2014-06-27 00:40:10
【问题描述】:

我试图在一个循环中选择两个不同的范围(即第一次迭代选择一个范围,第二次迭代选择另一个范围)。这是我的尝试,看看我是否可以做一个简单的任务,比如一个接一个地选择两个范围:

Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
    m = i * 50 - 48
    n = i * 50 + 1
    Range(Cells(m, 1), Cells(n, 2)).Select
Next i

End Sub

这给出了错误:“对象'_Global'的方法'Cells'失败”

我之前试过这样:

Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
    m = i * 50 - 48
    n = i * 50 + 1
    Range("Am:Bn").Select
Next i

End Sub

或者:

Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
    m = i * 50 - 48
    n = i * 50 + 1
    Range("A$n:B:m").Select
Next i

End Sub

以上都没有奏效。我认为我的问题是在字符串中使用循环相关变量(我试图通过在“Range()”中使用“Cells(#,#)......”形成来避免这种情况。但现在我只是卡住了。

这可能吗?

【问题讨论】:

  • 提供的示例确实可以正常工作,是否有任何其他代码可能会干扰它?对于您的第二个示例,代码应类似于 Range("A" & m & ":B" & n).Select ,这应该也可以。
  • 你的第一个样本对我来说非常适合。
  • 尝试使用工作表名称和/或工作表编号完全限定您的范围引用。
  • 第二个和第三个例子在范围地址中使用了错误的引号。他们应该像Range("A" & n & ":B" & m).Select.
  • 你在使用合并单元格吗?或锁定的工作表/单元格,?还是隐藏? (不能选择那些...)

标签: vba excel


【解决方案1】:

您可能会收到“对象 '_Global' 的方法 'Cells' 失败”错误,因为您的 Cells() 方法未附加到对象。根据这篇文章 (Method 'Range' of object '_Global' failed. error),您可以通过使用“activeSheet”来避免这种情况。

Sub SelectingTwoRanges2()
    Dim i As Integer
    Dim m As Integer
    Dim n As Integer
    For i = 1 To 2
        m = i * 50 - 48
        n = i * 50 + 1
        With ActiveSheet
            .Range(.Cells(m, 1), .Cells(n, 2)).Select
        End With
    Next i
End Sub

至于您的其他示例;你完全正确。在字符串中包含变量名根本不会引用该变量。您可以使用以下格式连接字符串(VBA会自动尝试将变量值转换为连接中的字符串)

Range("A" & m & ":B" & n).Select 

我个人喜欢使用 CStr() 来确保 VBA 将值转换为字符串

Range("A" & CStr(m) & ":B" & CStr(n)).Select

【讨论】:

    【解决方案2】:

    第一个例子对我有用,但试试:

     activesheet.Range(activesheet.Cells(m, 1), activesheet.Cells(n, 2)).Select
    

    这将完全限定 Cells() 范围引用。

    【讨论】:

      猜你喜欢
      • 2021-01-09
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      相关资源
      最近更新 更多