【发布时间】:2018-06-21 06:07:35
【问题描述】:
我试图在以下情况下自动更新显示的复制和粘贴范围:1) 复选框为 TRUE 和 2) 当 ComboBox1 中的值发生变化时(在本例中从 OPEN 变为 CLOSED,反之亦然)。 代码按预期工作,但在更改为 OPEN 或 CLOSED 后,我必须取消选择并重新选择复选框,这就是我要克服的问题。
当 Checkbox 为 FALSE 时,将执行一组不同的执行(在代码中注释掉)。所以我想在复选框为真时进行更改。
我试图实现一个while循环,但最终卡在了循环中。
代码如下:
Private Sub Checkbox1_Change()
If Checkbox1.Value = True Then
ComboBox1.List = Array("Closed", "Open")
With ComboBox1.Value = "Open"
Worksheets("FSM Search Data").Range("$A$1:$AD$2000").AutoFilter Field:=4, Criteria1:=Worksheets("FSM Search").ComboBox1.Value
Worksheets("FSM Search Data").Range("B2:AD2000").SpecialCells(xlCellTypeVisible).Copy
AutoFilterMode = False
Worksheets("FSM Search").Activate
Worksheets("FSM Search").Range("B4").PasteSpecial xlPasteValues
Range("B1:AD5").Columns.AutoFit
End With
With ComboBox1.Value = "Closed"
Worksheets("FSM Search Data").Range("$A$1:$AD$2000").AutoFilter Field:=4, Criteria1:=Worksheets("FSM Search").ComboBox1.Value
Worksheets("FSM Search Data").Range("B2:AD2000").SpecialCells(xlCellTypeVisible).Copy
AutoFilterMode = False
Worksheets("FSM Search").Activate
Worksheets("FSM Search").Range("B4").PasteSpecial xlPasteValues
Range("B1:AD5").Columns.AutoFit
End With
End If
'If Checkbox1.Value = False Then
'With Worksheets("FSM Data")
'ComboBox1.List = .Range("B2:B" & .Range("B" & .Rows.Count).End(xlUp).Row).Value
'Worksheets("FSM Search").Activate
'Range("C4").Value = ComboBox1.Value
'Range("B1:AD5").Columns.AutoFit
'End With 'End If End Sub
感谢您的帮助!!!!
【问题讨论】:
-
将代码放在
ComboBox更改事件中,然后评估复选框是否为TRUE/FALSE。 -
感谢您的捕获,完全忽略了这一点。问题已解决
-
Scott,指的是注释掉的代码,现在当我取消选中该复选框时,新列表不会出现。你有什么想法吗?
-
我认为这两个事件都需要代码。可能最好编写一个或多个单独的过程并在事件代码中调用它们,为复选框传递
TRUE / FALSE,为组合框传递Open/Closed。
标签: excel checkbox combobox auto-update vba