gpt4 book ai didi

VBA Excel 断点和停止不起作用

转载 作者:行者123 更新时间:2023-12-01 22:48:23 31 4
gpt4 key购买 nike

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

代码一直正常运行到最后(我测试过),但忽略了断点和停止。

单步执行只是使代码完整运行,忽略断点和停止。

当我关闭工作簿时,问题似乎源自其他宏工作簿中出现的相同问题。

如果我完全关闭 Excel 并使用正常工作的宏工作簿重新打开它,则在重新打开有问题的工作簿之前不会出现问题。

我在以下位置添加了断点:

TotP1 = 0

以下代码:

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

最佳答案

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

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

关于VBA Excel 断点和停止不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32254903/

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