使用Excel宏选择范围

时间:2011-05-24 17:38:44

标签: excel excel-vba range selection vba

  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

我想用<ctrl> + <down arrow>

编写一个用于选择范围的宏

这个过程应该是这样的

  1. 选择单元格A1
  2. 使用<shift> + <ctrl> + <page down>
  3. 选择范围
  4. 选择单元格A1而不取消范围选择(使用<ctrl>
  5. ActiveCell.Offset(0, 2).Select
  6. 然后范围从C1到C9选择<shift> + <ctrl> + <page down>然后<shift> + <up arrow>
  7. 按照我的示例数据中的这些步骤,在同一行选择了224579和100007,未选择100008。

    我想选择A1到A9之间的范围也是C1到C9,但我希望宏在没有定义A1和A9等范围的情况下这样做,因为范围可能会改变,就像A1会在一些改动后改为A5 。所以,我希望宏能够适应并相应地获取数字。

2 个答案:

答案 0 :(得分:2)

如果A1是活动单元格,这应该有效。

Union(Range(ActiveCell, ActiveCell.End(xlDown)), Range(ActiveCell.Offset(0, 2), ActiveCell.End(xlDown).Offset(0, 2))).Select

答案 1 :(得分:0)

不确定,但你想要这个吗?

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

将代码粘贴到工作表代码模块中,然后在工作表上选择一个范围。