2013-10-30 35 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