2013-10-30 34 views
0

我想,每當用戶啓動「MyMacro」清除當前的選擇。 我使用下面的代碼:VBA擅長selection.clear不明確的選擇

Sub MyMacro() 

    If Not IsSheetExists("Memory") Then 
     Worksheets.Add(After:=Worksheets(Worksheets.Count)).name = "Memory" 
    End If 

    Sheets("Memory").Visible = xlSheetVisible 'change to xlSheetVeryHidden 
    ActiveWorkbook.Sheets("Sheet1").Activate 

    ClearAllSheets 

    ...... 
End Sub 

Sub ClearAllSheets() 
    For Each sh In ActiveWorkbook.Sheets 
     sh.Cells.Clear 
     sh.Buttons.Delete 
     Selection.Clear 
    Next sh 
End Sub 

你能告訴我爲什麼Selection.Clear不會清除當前的選擇? Cells.clear和Buttons.Delete似乎工作...

感謝, 李

+0

你有選擇的一些範圍或細胞? –

+0

是不是'sh.Cells.Clear'已經清除了所有內容? – sam092

+0

薩姆是正確的,該行應該清除一切。 – L42

回答

2

好吧,

.Clear是爲了清除細胞/範圍裏面的內容(&格式),但不能取消選擇

因此,當您使用Selection.Clear,什麼都不會發生

當你有也提到了,爲什麼不選擇一個虛擬單元呢?

+0

難道你不能解釋一切嗎?必須有一種方法..我用Google搜索它... – user429400

+0

我可能是錯的,但AFAIK,至少有一個單元格在活動頁 – sam092

+0

沒有注意到,隨時選擇。這真是難過;這真是傷心 :) – user429400

1

Selection.Clear不起作用,因爲你沒有任何選擇的範圍。

如果這樣的代碼是:

sh.Cells.Select 
Selection.Clear 

然後它可能會工作。
但最好不要使用Select

更新: 補充一點:

Dim rng as range 

Set rng = Selection 

或在您的情況:

set rng = sh.Application.Selection 

然後執行:

Selection.Clear. 

它將清除當前選定的範圍。

+0

我不明白髮生了什麼事情。我嘗試選擇一個虛擬單元格,然後使用Selection.Clear清除選區,並且它不會清除選區以及... – user429400

+0

,對於選區。清除「工作,你必須先選擇一些東西。如果你想刪除當前選中的單元格,請參閱我的更新。 – L42

0

試試這個,而不是

Selection.ClearContents