使用Excel宏选择范围

使用Excel宏选择范围,excel,range,selection,vba,Excel,Range,Selection,Vba,我想编写一个宏,用+ 过程应该是这样的 选择单元格A1 用++ A在不取消范围选择的情况下选择单元格A1(使用) ActiveCell.Offset(0,2)。选择 然后用++然后++从C1到C9选择范围 按照我的示例数据中的这些步骤,224579和100007在同一行中被选中,100008未被选中 我想选择A1到A9之间的范围,也要选择C1到C9之间的范围,但我希望宏在不定义A1和A9这样的范围的情况下执行此操作,因为经过一些更改后,范围可能会更改为A1到A5。因此,我希望宏能够相应地调整并获

我想编写一个宏,用
+

过程应该是这样的

  • 选择单元格A1
  • ++
  • A在不取消范围选择的情况下选择单元格A1(使用
  • ActiveCell.Offset(0,2)。选择
  • 然后用
    ++
    然后
    ++
    从C1到C9选择范围
  • 按照我的示例数据中的这些步骤,224579和100007在同一行中被选中,100008未被选中


    我想选择A1到A9之间的范围,也要选择C1到C9之间的范围,但我希望宏在不定义A1和A9这样的范围的情况下执行此操作,因为经过一些更改后,范围可能会更改为A1到A5。因此,我希望宏能够相应地调整并获取数字。

    不确定,但您希望这样吗

      A      B        C
    
    123455  XXX     99999
    123456  XX      100000
    123457  XXX     100001
    174564  XXXX    100002
    184567          100003
    194570          100004
    204573          100005
    214576          100006
    224579          100007
                    100008
    

    将代码粘贴到工作表代码模块中,并在工作表上选择一个区域。

    如果A1是活动单元格,则此操作应有效

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Static self_protect As Boolean
    
      If self_protect Then Exit Sub
    
      self_protect = True
      Set Target = Target.Areas(1)
      Application.Union(Target, Target.Offset(0, 2)).Select
      self_protect = False
    End Sub
    

    我不明白?我将此代码复制并粘贴到宏模块,然后单击“运行”,打开经典的宏运行/创建/取消窗口,所有按钮均未激活(取消除外)@user768199复制到工作表代码模块(以您希望代码处理的工作表命名的代码模块),而不是宏模块。您不必显式地运行它。只需在那张纸上选择一个范围。哇。如何在宏中执行此操作?另外,如果我想在选择中添加更多的列,如第4列和第6列,我想选择A1到A9之间的范围以及C1到C9。但我希望宏在没有像A1和A9这样定义范围的情况下执行此操作,因为可能范围会像A1一样变化,经过一些修改后会变为A5,所以我希望宏适应并获取数字accordingly@eggplant_parm谢谢,但这将选择包括B列在内的整个范围。我不想选择该列。@user768199这将只选择A列和C列。哦,是的,eggplant\u parm您已经更改了代码:)如果我想再次添加E列,直到同一行,例如?选择一个C E直到同一行?@user768199您可以在union()中添加另一个范围,偏移量设置为4而不是2。对于遇到此问题的任何其他人,使用Office内置的宏记录器可以使您很容易找到此类解决方案。
    Union(Range(ActiveCell, ActiveCell.End(xlDown)), Range(ActiveCell.Offset(0, 2), ActiveCell.End(xlDown).Offset(0, 2))).Select