簡體   English   中英

vbYesNo之后的VBA Excel用戶窗體清除范圍

[英]VBA Excel Userform Clear Range after vbYesNo

下面的代碼旨在檢查給定范圍內的單元格是否為空。 如果不是,則詢問用戶是否要保存范圍的內容。 如果他們選擇“否”,則清除該范圍的內容。

 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”代替“ .ClearContents”。 在外部If語句中添加Else語句。 我試過選擇僅填充單元格的范圍。 無論我做了什么,范圍的內容都將保留在那里,直到我手動將其刪除為止。 其他一切似乎都正常。 我一生無法弄清代碼中缺少的內容。

有什么建議么?

編輯:這是整個功能的代碼:

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

我是一個白痴。 當用戶從下拉列表中選擇新名稱時,將觸發此功能。 原始名稱已被清除,然后被新名稱替換。 我只是沒有意識到名字已經改變。 感謝您幫助我以嶄新的眼光看待這個問題。 萬一有人發現我的代碼有用,我將不提問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM