工作表事件计时导致崩溃?

时间:2014-05-19 15:00:01

标签: vba excel-vba excel

我的Excel文档中的工作表会在编辑时偶尔崩溃Excel,并且会显示无用的错误消息。崩溃是罕见的,但确实发生了。我想知道工作表事件代码的以下部分是否导致崩溃。具体而言," BeforeDoubleClick"调用" SelectionChange",但双击一个单元格也是一个选择更改,所以SelectionChange从两个不同的地方调用,导致一些时间问题,有时崩溃?我是初学者,不知道我是否使用了正确的术语。

我有一个单元格(例如,在第1列中)我希望在用户点击它时按颜色切换。如果我没有使用beforedoubleclick事件,如果用户切换颜色,为了再次切换它们,他们必须先离开单元格然后返回。我想避免这种情况,并让用户能够留在那个单元格上,切换颜色。第7栏的类似评论。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
If Target.Column = 1 Or Target.Column = 7 Then
   Cancel = True
Else
   Cancel = False
End If
Worksheet_SelectionChange Target
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)


If Target.Column = 1 And Target.Row >= 13 And Cells(Target.Row, 2) <> "" Then
Select Case Target.Interior.ColorIndex
    Case xlNone
        Target.Interior.ColorIndex = 4
    Case 4
        Target.Interior.ColorIndex = 3
        UserForm2.ListBox1.ListIndex = -1       
    Case 3
        Target.Interior.ColorIndex = 4
        UserForm2.ListBox1.ListIndex = -1

  End Select
End If

If Target.Column = 7 And Target.Row >= 13 And Cells(Target.Row, 2) <> ""  Then
  Set TagCell = Target 
   UserForm3.Show
End If

End Sub

1 个答案:

答案 0 :(得分:1)

您是否需要在双击事件中调用Worksheet_SelectionChange?尝试删除它。

否则,您可以创建一个单独的Sub,其中包含来自SelectionChange的代码,并调用该Sub代替。 (也可以在SelectionChange事件中调用它,将其从此事件中删除。)

这样,您运行所需的代码,而不会触发两次更改事件。