VBA Excel Break Points和Stop不起作用

Oli*_*eys 8 excel vba excel-vba

知道为什么插入断点并停止不再阻止我的vba代码运行?

代码一直运行到最后(我测试了它)但忽略了断点和停止.

另外,只需使代码完全运行,忽略断点和停止.

当我关闭工作簿时,问题似乎源自同一问题发生在其他宏工作簿中.

如果我完全关闭excel并使用正常工作的宏工作簿重新打开它,那么直到我重新打开问题工作簿才会出现问题.

我添加了断点:

TotP1 = 0
Run Code Online (Sandbox Code Playgroud)

以下代码:

Option Explicit

Private Country As String
Private Measure As String
Private P1 As String
Private P2 As String
Private TotP1 As Double
Private TotP2 As Double


Sub VennDisplayIt()

Dim SI() As String
Dim SICount As Integer
Dim x As Integer
Dim OSh As Worksheet
Dim BrandListBox As Object
Dim VennGroup As Shape

TotP1 = 0
TotP2 = 0


Set OSh = ThisWorkbook.Sheets("Venn")

Set BrandListBox = OSh.OLEObjects("BrandListBox").Object

ReDim SI(2, 0)

For x = 0 To BrandListBox.ListCount - 1

    If BrandListBox.Selected(x) = True Then
        'If UBound(SI) < 4 Then
            ReDim Preserve SI(2, UBound(SI, 2) + 1)

            SI(1, UBound(SI, 2)) = BrandListBox.List(x)
            SI(2, UBound(SI, 2)) = x + 1
        'End If

    End If

Next x


If UBound(SI, 2) < 2 Then
    BrandListBox.Selected(BrandListBox.ListIndex) = True
    Exit Sub
ElseIf UBound(SI, 2) > 4 Then
    BrandListBox.Selected(BrandListBox.ListIndex) = False
    Exit Sub
End If

For x = 1 To UBound(SI, 2)
    OSh.Range("o8").Offset(x, 0).Value = SI(1, x)
    OSh.Range("o8").Offset(x + 5, 0).Value = SI(1, x)
Next x

For x = UBound(SI, 2) + 1 To 4
    OSh.Range("o8").Offset(x, 0).Value = ""
    OSh.Range("o8").Offset(x + 5, 0).Value = ""
Next x


SICount = UBound(SI, 2)

For x = 1 To OSh.Shapes.Count
    If Right(OSh.Shapes(x).Name, 5) = "Group" Then
    If LCase(OSh.Shapes(x).Name) = SICount & "waygroup" Then
        Set VennGroup = OSh.Shapes(x)
        OSh.Shapes(x).Visible = True
    Else
        OSh.Shapes(x).Visible = False
    End If
    End If

Next x

For x = 1 To SICount

    VennGroup.GroupItems.Item(SICount & "WayBrand" & x).DrawingObject.Text = SI(1, x)

Next x


Country = ThisWorkbook.Sheets("Venn").Range("D4").Value
Measure = ThisWorkbook.Sheets("Venn").Range("E32").Value
P2 = ThisWorkbook.Sheets("Venn").Range("E31").Value
P1 = ThisWorkbook.Sheets("Selections").Range("B5").Value


End Sub
Run Code Online (Sandbox Code Playgroud)

Dic*_*ika 6

我从来没有听说过Stop不工作,但我多次听说并经历过断点事.编译VBA时,它会创建一个p代码,由解释器使用.您有可以看到的VBA语法层和您看不到的p代码层.当断点停止工作时,这是因为p代码已损坏.我不知道它是怎么发生的,为什么发生了,但确实如此.

修复方法是导出,删除和重新导入所有模块.导出它们会创建一个.bas文件(纯文本,真的).重新导入时,将从头开始重新生成p代码.如果您有多个模块,请获取CodeCleaner(免费加载项),它将自动导出并重新导入.