VBA Excel宏清除所有组合框和复选框

时间:2016-09-22 04:43:31

标签: vba excel-vba excel

我基本上试图将一个宏分配给一个命令按钮,该按钮清除某些单元格以及活动工作表上的一些组合框和复选框,但无法使我的宏/命令成功运行。请帮忙!非常感谢。到目前为止,我的代码看起来像这样:

Sub Macro4()

Sheet4.Select
Range("B3").Select
Selection.ClearContents
Range("B4").Select
Selection.ClearContents
Range("C13").Select
Selection.ClearContents
Range("C14").Select
Selection.ClearContents
Range("F8").Select
Selection.ClearContents
Range("J8").Select
Selection.ClearContents
Range("B23").Select
Selection.ClearContents
Range("J3").Select
Selection.ClearContents
Range("G4").Select
Selection.ClearContents
Sheet4.ComboBox4.Select
ComboBox4 = ""

End Sub

2 个答案:

答案 0 :(得分:1)

尝试

Sheet4.ComboBox4.Value = ""

同样作为一般提示,而不是使用像:

这样的选择
range("A1").select
selection.clearcontents

您可以组合这些行,并告诉它直接清除内容:

range("A1").clearcontents

答案 1 :(得分:1)

我设置了一个名为 ClearRng 的范围,它包含要清除内容的所有单元格。

此外,代码循环遍历“ Sheet4 ”中的所有OLEObjects,并检查它们是否为ComboBox类型,如果它们清除了它的内容。

(此代码适用于ActiveX Controls,而不是User_Form Controls

Option Explicit

Sub Macro4()

Dim Sht                 As Worksheet
Dim ClearRng            As Range
Dim Obj                 As OLEObject

' set Sht variable to "Sheet4"
Set Sht = ThisWorkbook.Sheets("Sheet4")

' set all the cells you want to clear in one Range
Set ClearRng = Sht.Range("B3,B4,C13,C14,F8,J8,B23,J3,G4")

ClearRng.ClearContents       

' loop thourgh all OLE objects in "Sheet4"
For Each Obj In Sht.OLEObjects
    ' for debug > check name if ActiveX Control
    Debug.Print Obj.Name

    ' if OLE Object is type ComboBox
    If Obj.progID = "Forms.ComboBox.1" Then
       Obj.ListFillRange = ""  ' clear all contents of the ComboBox
    End If

End Sub

选项2:清除ComboBox的内容,使用Sheet4对象类型,然后使用以下代码:

With Sheet4.ComboBox4
    .Clear
End With