【发布时间】:2015-05-29 22:49:14
【问题描述】:
下面的代码旨在检查给定范围内的单元格是否为空。如果不是,则询问用户是否要保存范围的内容。如果他们选择“否”,则清除范围的内容。
Dim answer As Integer
If Not WorksheetFunction.CountA(Worksheets("Temp").Range("A1:D101")) = 0 Then
answer = MsgBox("Save changes for this account?", vbYesNo)
If answer = vbYes Then
'do nothing
Else
Worksheets("Temp").Range("A1:D101").ClearContents
End If
End If
由于某种原因, clear 方法不会清除任何内容。我尝试过首先激活工作表。首先选择范围。首先选择工作表,然后选择范围。使用“.Clear”而不是“.ClearContents”。将 Else 语句添加到外部 If 语句。我尝试选择一系列仅填充的单元格。无论我做了什么,范围的内容都会保留在那里,直到我手动删除它。其他一切似乎都很好。我一生都无法弄清楚我的代码中缺少什么。
有什么建议吗?
编辑:下面是整个函数的代码:
Private Sub NameBox_Change()
Dim answer As Integer
If Not WorksheetFunction.CountA(Worksheets("Temp").Range("A1:D101")) = 0 Then
answer = MsgBox("Save changes for this account?", vbYesNo)
If answer = vbYes Then
'do nothing
Else
Worksheets("Temp").Range("A1:D101").ClearContents
End If
End If
With Me
Worksheets("Temp").Cells(1, 1).Value = Format(Date, "mm-dd-yyyy")
Worksheets("Temp").Cells(1, 2).Value = Worksheets("Users").Cells(.NameBox.ListIndex + 1, 1).Value
Worksheets("Temp").Cells(1, 3).Value = Worksheets("Users").Cells(.NameBox.ListIndex + 1, 6).Value
Worksheets("Temp").Cells(1, 4).Value = Worksheets("Users").Cells(.NameBox.ListIndex + 1, 7).Value
ReadLabel.Caption = Worksheets("Temp").Cells(102, 3).Value
SpentLabel.Caption = Worksheets("Temp").Cells(102, 4).Value
ToSpendLabel.Caption = Worksheets("Temp").Cells(102, 3).Value - Worksheets("Temp").Cells(102, 4).Value
End With
End Sub
【问题讨论】:
-
这个范围有什么特别之处吗?它是更大数组公式的一部分吗?
-
如果你调试,你会到达
ClearContents这一行吗? -
范围的值由另一个工作表的值填充。我曾经设置过 Auto Sum 单元格,但后来删除了它。调试器对我的代码没有任何问题,我也没有收到任何错误。