gpt4 book ai didi

vba - 当我删除一系列单元格时(K2 :K18) getting an debug message

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

我坚持使用其中一个 VBA 代码。我的要求是当用户从数据验证中选择 K 行中的选项“已辞职”时,如果他应该收到一条弹出消息,即“请在 L2 列上以 DD-MM-YYYY 格式提供用户的最后工作日期”。这里 L2 只是一个例子。

但是,当我通过选择 K2:K18 范围来点击删除键时,会收到一条消息“运行时错误 13,类型不匹配”

请帮助解决这个问题:(

以下是我的代码。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("K:K")) Is Nothing Then Exit Sub
If Target.Value <> "Resigned" Then Exit Sub
MsgBox "Please provide the user's Last Working Date in DD-MM-YYYY format on " & Target.Offset(0, 1).Address

End Sub

最佳答案

您需要查看If Target.Cells.Count <> 1并妥善处理。

在您的情况下,您正在导致 _Change参加Target的事件参数为 Range("K2:K18")这是一个数组,因此类型不匹配错误。

这是一个简单的案例,如果 Target 则中止程序。超过 1 个单元格范围:

Private Sub Worksheet_Change(ByVal Target As Range)
'Conditions which cause the event to terminate early, avoid errors
If Target.Cells.Count <> 1 Then Exit Sub
If Intersect(Target, Range("K:K")) Is Nothing Then Exit Sub

If Target.Value = "Resigned" Then
MsgBox "Please provide the user's Last Working Date in DD-MM-YYYY format on " & Target.Offset(0, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Application.GoTo Target.Offset(0,1)
End If
End Sub

或者,要处理多个单元格范围,您可以执行以下操作:
Private Sub Worksheet_Change(ByVal Target As Range)
'Conditions which cause the event to terminate early, avoid errors
Dim rng As Range, cl As Range, msg as String
Set rng = Intersect(Target, Range("K:K"))
If rng Is Nothing Then Exit Sub

For Each cl in rng
If cl.Value = "Resigned" Then
msg = msg & vbCRLF & cl.Offset(0,1).Address(False,False)
End If
Next
If msg <> vbNullString Then
MsgBox "Please provide the user's Last Working Date in DD-MM-YYYY format on " & vbCrlf & msg
End If
End Sub

关于vba - 当我删除一系列单元格时(K2 :K18) getting an debug message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047931/

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