VBA设置.ClearContents之后的单元格值

为什么在清除另一个函数中的范围的内容时,单元格的值没有在另一个函数中设置?

我想清除范围内的单元格后,将单元格值设置为“全部”。 我甚至试图得到一个消息框popup,看看我能否以某种方式检查我的检查值是否正确。

DelRange是我正在清理的范围。

Building是我检查价值的单元格,如果它是空白的,它需要更改为“全部”。

clearPreviw用于清除正在执行的另一个工作表。

 Sub ClearSheet() Dim Dash As Worksheet Dim DelRange As Range Dim Building As Range Set Dash = ActiveWorkbook.Worksheets("DASH") Set DelRange = Dash.Range("FilterData") Set Building = Dash.Range("SelBuild") DelRange.ClearContents Call clearPreview 'This part below doesn't work when the Range.ClearContents has been done, but doing it on it's own without clearing the range works fine If Building.Value = "" Then MsgBox "Building is empty", vbOKOnly Building.Value = "All" End If End Sub 

我已经运行这个testing作为一个单独的过程,但是再次运行它作为一个调用函数之后.ClearContents似乎停止了这一点。

 Sub test() Dim Dash As Worksheet Dim DelRange As Range Dim Building As Range Set Dash = ActiveWorkbook.Worksheets("DASH") Set DelRange = Dash.Range("FilterData") Set Building = Dash.Range("SelBuild") If Building.Value = "" Then MsgBox "Building is empty", vbOKOnly Building.Value = "All" End If End Sub 

我一直在戳它和search,但我不能把我的头围绕这个。

我想你错过了:

 Building.ClearContents; 

另外我宁愿:

 If IsEmpty(Building.Value) Then 

过度:

 If Building.Value = "" Then 

这个链接给你如何设置范围variables的好开始(虽然我会build议你不要使用.Select.Activate )。

之后,根据您的需要使用.ClearContents.Clear

如果您正确清除了范围,则无需检查是否为空,因此这可能是您当前计划中的冗余步骤。