为什么 VBA 中的这个联合范围会在 Excel 中选择不需要的单元格?

问题描述

我试图让我的生活更轻松一些,并通过使用由按钮激活的宏在某些单元格中填充一些值,宏如下所示:

Sub Fill_123()

Dim unionRange As Range
Dim ws As Worksheet
Set ws = Worksheets(1)

With ws
    Set unionRange = Union(.Range("G48:G48"),.Range("G51:G51"),.Range("G55:G55"),.Range("G58:G58"),.Range("G60:G60"),.Range("G61:G61",.Range("G63:G63")))
End With

Dim myCell As Range

For Each myCell In unionRange
    If myCell.Address = "$G$60" Then
        myCell = myCell + 1
    ElseIf myCell.Address = "$G$63" Then
        myCell = myCell + 3
    Else
        myCell = myCell + 1
    End If
Next

End Sub

此宏将填充以下单元格:

enter image description here

如果你看得足够近,你会发现我没有选择 G62 但不知何故它在这个单元格中添加一个“1”,这怎么可能?

提前致谢

解决方法

您也可以使用 Union 代替 Set unionRange = .Range("G48,G51,G55,G58,G60,G61,G63"),它会更短一些。

你也可以用

替换你的If … End If
If myCell.Address = "$G$63" Then
    myCell = myCell + 3
Else
    myCell = myCell + 1
End If

较短但完全相同。