gpt4 book ai didi

excel - 运行时错误 1004 : Clearing cell next to dropdown list

转载 作者:行者123 更新时间:2023-12-04 21:27:41 24 4
gpt4 key购买 nike

我正在尝试清除下拉列表旁边的单元格。目标是在它更改时清除它旁边的单元格。如果 excel 表很简单并且那里没有太多其他数据,我的代码运行良好。现在在我想要实现它的工作表上,它总是给我错误 VBA Runtime Error 1004 “Application-defined or Object-defined error”。我该如何解决这个问题?另一件更难的事情是我在 Private Sub Worksheet_Change(ByVal Target As Range) 中还有其他代码。
我认为一个解决方案可能是找到一种方法让它在不使用 Target 的情况下工作。不幸的是,如果没有这个,我似乎找不到有用的东西。

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
If Target.Column = 2 And Target.Validation.Type = 3 Then
Application.EnableEvents = False
Target.Offset(0, 1).ClearContents
End If
End Sub
编辑:其他代码的一部分
With Sheet2
Select Case .Range("B2")
Case "C-shuttle 150 core"
.Range("F4:Q4").Locked = True
.Range("B2").Locked = False

Case "C-shuttle 250 core"
.Range("F4:I4").Locked = False
.Range("B2").Locked = False
.Range("J4:Q4").Locked = True

Case "C-shuttle 250 core with platfrom for DB or TD"
.Range("B4:Q4").Locked = False
.Range("B2").Locked = False

Case "C-shuttle 350 core"
.Range("B4:Q4").Locked = False
.Range("B2").Locked = False
End Select
End With

ExitHandler:
Sheet2.Protect Password:="Secret" ' ALWAYS PROTECT SHEET AT END ERROR OR NOT
Application.EnableEvents = True
Exit Sub

ErrHandler:
MsgBox Err.Number & " - " & Err.Description, vbCritical
Resume ExitHandler
非常感谢你的帮助!

最佳答案

如果 target,您将看到错误 1004没有验证集。请注意,VBA 将评估 If 的两个部分。 -陈述。即使Target.Column不是 2(因此整个 IF 不能为 True),VBA 将检查 Target.Validation.Type .
另一个问题是 target可以包含多个单元格(例如,如果用户将数据剪切并粘贴到多个单元格中)。您需要分别检查每个单元格。
不幸的是,如果一个单元格有验证,在 VBA 中没有简单的测试,你需要使用 On Error Resume Next检查类型(见 https://stackoverflow.com/a/31346246/7599798 )
此外,您对 EnableEvents 有疑问。 .如果您的触发器即将修改数据,则需要禁用事件。这是为了防止此修改本身调用 Change-Trigger,这可能导致无休止的递归调用(最终导致 Stack Overflow 错误)。但是,无论如何,您都需要启用这些事件,否则将永远不会再次调用触发器。
你的触发器可能看起来像

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

Dim cell As Range
For Each cell In Target
If cell.Column = 2 Then
Dim vType
vType = Null
On Error Resume Next
vType = cell.Validation.Type
On Error GoTo 0

If vType = 3 Then
cell.Offset(0, 1).ClearContents
End If
End If
Next

Application.EnableEvents = True
End Sub

关于excel - 运行时错误 1004 : Clearing cell next to dropdown list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66386772/

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