Excel VBA-运行时错误13类型不匹配
我正在创建一个任务列表样式的excel工作表,其中人员被分配了任务,并且可以将该工作表用作进度跟踪器 一旦任务完成,一个人会将其标记为已完成,工作表会弹出一个消息框,询问是否需要更改参考号 但是,当我按完成任务的人员进行筛选,并尝试为新任务添加新行时,我得到运行时错误13类型不匹配。我认为这是因为我的VBA不断检查要完成的任务的状态,所以当您创建一个空行时,状态列中没有任何内容 下面是用错误消息突出显示的代码Excel VBA-运行时错误13类型不匹配,vba,excel,spreadsheet,Vba,Excel,Spreadsheet,我正在创建一个任务列表样式的excel工作表,其中人员被分配了任务,并且可以将该工作表用作进度跟踪器 一旦任务完成,一个人会将其标记为已完成,工作表会弹出一个消息框,询问是否需要更改参考号 但是,当我按完成任务的人员进行筛选,并尝试为新任务添加新行时,我得到运行时错误13类型不匹配。我认为这是因为我的VBA不断检查要完成的任务的状态,所以当您创建一个空行时,状态列中没有任何内容 下面是用错误消息突出显示的代码 Private Sub Worksheet_Change(ByVal Target A
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim answer
If Not Intersect(Target, Range("H5:H1000")) Is Nothing Then
If (Target.Value) = "Completed" Then
answer = MsgBox("Do you need to add a change reference?", vbYesNo + vbQuestion, "Change Reference Reminder")
If answer = vbYes Then
MsgBox "Add in the column to the right", , ("Change Reference Tip")
Else
'do nothing'
End If
End If
End If
End Sub
这里发生了一些事情;太多,无法在评论中描述
工作表\u Change
工作表宏由事件触发,特别是当一个或多个单元格的内容发生更改时。如果希望在插入行时避免繁重的处理(随后更改许多单元格的值),则需要在Target
不止一个单元格时将其踢出。通常,如果Target.cells.count>1,则包括,然后退出sub
,因为第一行足以完成此操作。这一点尤其重要,因为您希望将单个已更改单元格的值与已完成的值进行比较工作表\u Change
事件maco的第二次迭代(随后尝试在其自身上运行),您需要暂时停止事件处理,并在离开宏之前重新启动它Dim
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H5:H1000")) Is Nothing Then
On Error GoTo Erreur
Application.EnableEvents = False
If LCase(Target.Value) = "completed" Then
Dim answer As Variant
answer = MsgBox("Do you need to add a change reference?", vbYesNo + vbQuestion, "Change Reference Reminder")
If answer = vbYes Then
MsgBox "Change references are added in the column to the right." _
& Chr(10) & Chr(10) & "Let's go there now.", vbOKOnly, "Change Re ference Tip"
Target.Offset(0, 1).Activate
Else
'do nothing'
End If
End If
End If
GoTo Fìn
Erreur:
Debug.Print Err
Fìn:
Application.EnableEvents = True
End Sub
我添加了一行代码,将用户移动到触发事件的单元格右侧的单元格中。
Active.Sheet
?那意味着什么?VBA应该从memory.Command中告诉您发生问题的行号,但不执行任何操作^^^在哪一点添加额外的行?很抱歉,我错误地将active.sheet留在了中。这应该是一个“无所事事”的评论。我根据任务所属人员的姓名过滤任务列表,当我尝试添加另一行以添加另一个任务时,该行为空,这会给我一条错误消息,并突出显示VBAI测试代码中的“If(Target.Value)=“Completed”Then“行。它按预期运行,没有错误。无法重现您的问题。