vbYesNo之后的VBA Excel Userform清除范围

时间:2015-05-14 19:29:16

标签: excel vba excel-vba userform

以下代码旨在检查给定范围内的单元格是否为空。如果不是,则询问用户是否要保存该范围的内容。如果他们选择"否"范围的内容被清除。

 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

出于某种原因,明确的方法只是没有清除任何东西。我试过首先激活表格。首先选择范围。首先选择工作表然后选择范围。使用"。清除"而不是" .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

1 个答案:

答案 0 :(得分:0)

我是个白痴。当用户从下拉列表中选择新名称时,将触发此功能。原始名称已被清除,然后被新名称替换。我还没有意识到名字已经改变了。谢谢你用新鲜的眼睛帮我看一眼。如果有人发现我的代码有用,我会留下这个问题。