Workbook_sheetChange 打开单元格并选择另一个工作表时崩溃
Workbook_sheetChange crash when cell is open and another worksheet is selected
我正在为机器上的操作员编写 Excel 文件,因此它需要装甲。
我正在 运行 关于特定场景的一个小错误 link:
当我从 Workbook_sheetChange
的指定范围编辑一个单元格并单击另一个 sheet 时,代码崩溃并给出 1004,我知道为什么(错误的对象,因为我产生了一个交叉 - sheet _Global
link) 但我不知道如何避免它。我查看了 Stack 和 google 但没有找到任何东西,而且我有一个 mec engereeing 编程课程所以我不太了解对象和事件。
这是我的代码:
Sub Workbook_sheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Range("C4:C8")) Is Nothing Then 'Si changement dans les cellules "nom employé"
Call Employe ' Appel Macro pour nom automatique
End If
If Not Intersect(Target, Range("U18:V42")) Is Nothing Then
Call tritroughsheets ' Macro tri des temps d'arret
End If
End Sub
在这种情况下,例如,如果 C4 处于编辑模式并且在 Sheet1 中,并且操作员错误地单击了 Sheet2,它将弹出错误消息(我们不希望操作员处理)
我正在寻找像
这样的行
If(cell is being edited) Then
dont run my stuff till its close
End if
有什么想法吗?
谢谢,(戴上口罩)
不看调用的子程序很难定位错误。我建议在您的子 运行:
时禁用和重新启用事件
Sub Workbook_sheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("C4:C8")) Is Nothing Then 'Si changement dans les cellules "nom employé"
Call Employe ' Appel Macro pour nom automatique
End If
If Not Intersect(Target, Range("U18:V42")) Is Nothing Then
Call tritroughsheets ' Macro tri des temps d'arret
End If
Application.EnableEvents = True
End Sub
尝试改变
If Not Intersect(Target, Range("C4:C8")) Is Nothing
与:
If Not Intersect(Target, sh.Range("C4:C8")) Is Nothing 'exactly qualifies/references the range to the sh worksheet...
VBA 尝试两个不同作品sheet 中的范围之间的交集。当留在工作sheet时,Range("C4:C8")
指的是(正确的)活跃的sheet。当您从一个单元格移动到另一个工作sheet、而不更改分析范围中的任何内容时,事件不会被触发...所以,问题不是单元格编辑.
我正在为机器上的操作员编写 Excel 文件,因此它需要装甲。
我正在 运行 关于特定场景的一个小错误 link:
当我从 Workbook_sheetChange
的指定范围编辑一个单元格并单击另一个 sheet 时,代码崩溃并给出 1004,我知道为什么(错误的对象,因为我产生了一个交叉 - sheet _Global
link) 但我不知道如何避免它。我查看了 Stack 和 google 但没有找到任何东西,而且我有一个 mec engereeing 编程课程所以我不太了解对象和事件。
这是我的代码:
Sub Workbook_sheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Range("C4:C8")) Is Nothing Then 'Si changement dans les cellules "nom employé"
Call Employe ' Appel Macro pour nom automatique
End If
If Not Intersect(Target, Range("U18:V42")) Is Nothing Then
Call tritroughsheets ' Macro tri des temps d'arret
End If
End Sub
在这种情况下,例如,如果 C4 处于编辑模式并且在 Sheet1 中,并且操作员错误地单击了 Sheet2,它将弹出错误消息(我们不希望操作员处理)
我正在寻找像
这样的行If(cell is being edited) Then
dont run my stuff till its close
End if
有什么想法吗?
谢谢,(戴上口罩)
不看调用的子程序很难定位错误。我建议在您的子 运行:
时禁用和重新启用事件Sub Workbook_sheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("C4:C8")) Is Nothing Then 'Si changement dans les cellules "nom employé"
Call Employe ' Appel Macro pour nom automatique
End If
If Not Intersect(Target, Range("U18:V42")) Is Nothing Then
Call tritroughsheets ' Macro tri des temps d'arret
End If
Application.EnableEvents = True
End Sub
尝试改变
If Not Intersect(Target, Range("C4:C8")) Is Nothing
与:
If Not Intersect(Target, sh.Range("C4:C8")) Is Nothing 'exactly qualifies/references the range to the sh worksheet...
VBA 尝试两个不同作品sheet 中的范围之间的交集。当留在工作sheet时,Range("C4:C8")
指的是(正确的)活跃的sheet。当您从一个单元格移动到另一个工作sheet、而不更改分析范围中的任何内容时,事件不会被触发...所以,问题不是单元格编辑.