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

时间:2017-09-01 06:40:26

标签: excel vba excel-vba excel-2016

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

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

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

我将此测试作为一个单独的进程运行,但在.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

我一直在盯着它搜索,但我无法绕过这个。

2 个答案:

答案 0 :(得分:1)

This链接为您提供了如何设置范围变量的良好开端(尽管我建议您不要使用.Select.Activate)。

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

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

答案 1 :(得分:1)

我想你错过了:

Building.ClearContents;

我也希望:

If IsEmpty(Building.Value) Then

在:

If Building.Value = "" Then