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)
我从来没有听说过Stop不工作,但我多次听说并经历过断点事.编译VBA时,它会创建一个p代码,由解释器使用.您有可以看到的VBA语法层和您看不到的p代码层.当断点停止工作时,这是因为p代码已损坏.我不知道它是怎么发生的,为什么发生了,但确实如此.
修复方法是导出,删除和重新导入所有模块.导出它们会创建一个.bas文件(纯文本,真的).重新导入时,将从头开始重新生成p代码.如果您有多个模块,请获取CodeCleaner(免费加载项),它将自动导出并重新导入.
| 归档时间: |
|
| 查看次数: |
7835 次 |
| 最近记录: |