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

VBA set cell value after .ClearContents

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

我试图在清除范围内的单元格后将单元格值设置为 "All"。我什至尝试弹出一个消息框,看看我是否可以以某种方式检查我的检查值是否正确。

DelRange是我清除的范围

Building 是我正在检查其值的单元格,如果它是空白的,则需要更改为 "All"。

clearPreviw 用于清除它正在做的另一个 sheet。

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

我一直在研究它并进行搜索,但我无法解决这个问题。

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

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

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

我觉得你缺:

Building.ClearContents;

另外我更喜欢:

If IsEmpty(Building.Value) Then

超过:

If Building.Value = "" Then