2011-05-24 141 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