gpt4 book ai didi

vba - 以编程方式更改源列表时如何防止执行下拉列表

转载 作者:行者123 更新时间:2023-12-03 01:51:44 25 4
gpt4 key购买 nike

我的电子表格上有一个 activeX 下拉表单,它在 _Change 上执行代码。我的代码修改下拉列表源(添加或删除项目)。每当发生这种情况时,都会再次调用_Change

我有各种解决方法,所有这些都是更改列表源的某种版本,但没有成功。这些都不起作用的原因是清除或更改 .ListFillRange 实际上会再次触发 _Change 事件。

如果我想在 .ListFillRange 中添加或删除项目,如何防止调用 _Change 事件

更新将 EnableEvents 设置为 false:

Public Sub SetRangeForDropdown()
On Error Resume Next

Application.EnableEvents = False

'Get new List of employees from Employee sheet
Dim rng1 As Range
With wsDB_employee
Set rng1 = .Range("A2:B" & .Range("A10000").End(xlUp).Row)
End With
With wsStage
.Cells.Clear
rng1.Copy .Range(.Cells(1, 1), .Cells(rng1.Rows.Count, 2))
End With

'Set range for dropdown on employee sheet
Dim rng2 As Range
Set rng2 = wsStage.Range("A1:B" & wsStage.Range("A10000").End(xlUp).Row)

'Update employee list named formula
ActiveWorkbook.Names.Add Name:="nfEmployeeList", RefersTo:=rng2
Dim str As String
str = rng2.Parent.Name & "!" & rng2.Address 'Source path for list fill range
wsMA.cmbEmployeeSelection.ListFillRange = str

Application.EnableEvents = True

End Sub

显然EnableEvents不适用于ActiveX控件

感谢 Microsoft 让生活变得更加复杂!

刚刚发现:“Application.EnableEvents=False/True 仅适用于工作表和工作簿事件,不适用于 ActiveX 控件事件”enter link description here

最佳答案

您可以禁用 SetRangeForDropdown 中的事件,然后重新启用它们。

因此,在开头写下以下内容:

Application.EnableEvents = False

最后如下:

Application.EnableEvents = true

关于vba - 以编程方式更改源列表时如何防止执行下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39850685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com