2017-08-28 45 views
0

我想使用一行代碼來選擇列A到D和行1到4(但範圍將是動態的),單元格D4是空的。不幸的是既不以下的似乎工作:用一行代碼選擇4x4網格

Range("A1", Range("A1").End(xlToRight).End(xlDown)).Select 

也不

Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select 

感謝您的任何想法

+0

什麼定義了數據的結尾?如果以下示例中的D4是空白的,那麼它不是最後一個已填充的單元格 – ChrisM

+0

爲什麼代碼必須位於同一行上? – ChrisM

+0

嘿克里斯。這是這個宏中的所有代碼。基本上我試圖在按Ctrl + Shift +右鍵然後按Ctrl + Shift +鍵時模仿excel行爲,這樣可以很好地工作。代碼不一定在一行,但如果我將它分成兩行,它也不能按需要工作。 – barciewicz

回答

3

此代碼採取當前區域的最後一個單元格從A1(CTRL+*

Range("A1").CurrentRegion.Select 

應該工作。

而且

Range("A1").SpecialCells(xlCellTypeLastCell).Address 

應該給在工作表中的最後一個單元格的ADRESS。

+0

即使最後一個單元格是空的? – ChrisM

+0

是的,但我編輯我的帖子我不回答這個,其實只是設置rng =範圍(「A1」)。CurrentRegion.Select應該工作 – Bla2

+0

感謝Bla2,它的工作原理,但你知道如何調整代碼即使選擇位於工作表中間的某個位置,並且旁邊還有一個非空列,它也可以工作。 CurrentRegion在這種情況下是不夠的。 – barciewicz

0

如果您想選擇的4×4塊起始於A1,使用方法:

Range("A1").Resize(4, 4).Select 

如果要選擇包含在4列在A1盯着所有的值塊,使用:

Range("A1:D" & Range("A1:D" & Cells.Rows.Count) _ 
    .Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row).Select 

要移動基電池,例如,代替E7A1,只需用E7和取代A1A1:D以上分別爲。