2011-05-24 124 views
0
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>范围选择使用Excel宏

的过程应该是这样的

  1. 选择单元格A1
  2. 一系列选择,范围<shift> + <ctrl> + <page down>
  3. 在不取消范围选择的情况下对单元格A1进行曝光(使用<ctrl>
  4. ActiveCell.Offset(0, 2).Select
  5. 然后范围从C1选择具有<shift> + <ctrl> + <page down>至C9然后<shift> + <up arrow>

继我的数据。例如,224579和100007在同一行被选择的那些步骤,100008未选中。

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

+0

对于参考此问题的任何其他人,使用内置于Office的宏记录器可以使这种解决方案非常容易找到自己。 – Gaffi 2012-06-27 18:13:42

回答

2

如果A1是活动单元格,这应该工作。

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

我想选择A1到A9之间的范围,也是C1到C9。但我希望宏没有范围定义像A1和A9这样做,因为可能范围会改变,如A1将改变为A5后,一些改动,所以我想宏适应并获取相应的数字 – user768199 2011-05-24 18:02:23

+0

@eggplant_parm谢谢,但这将选择整体范围包括B列。我不想选择该列。 – user768199 2011-05-24 18:06:48

+0

@ user768199这将只会选择A列和C列。 – 2011-05-24 18:12:41

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 

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

+0

我不明白?我复制并粘贴这个代码到宏模块然后点击运行它打开经典的宏运行/创建/取消窗口没有任何按钮是活动的(除了取消) – user768199 2011-05-24 17:55:48

+0

@ user768199复制到*工作表代码模块*(代码模块命名在工作表之后,你想让代码工作),而不是一个宏模块。您不必明确运行它。只需在该表中选择一个范围。 – GSerg 2011-05-24 18:01:44

+0

WOW。我如何在宏中做到这一点?另外,如果我想添加更多的列像第4和第6列的选择? – user768199 2011-05-24 18:09:17