代码运行时,debbuging(F8)但不正常运行(F5)

当用户按下我的加载项选项卡上的button时,将触发以下代码:

Sub OnActionListaMarkowitz(control As IRibbonControl) GeneratesWorkbook End Sub 

在不同的模块中,我有一个子文件来创build一个新的工作簿,并将我的Xlam文件中的工作表复制到新的工作簿中。

 Sub GeneratesWorkbook() On Error GoTo LabelErro Set PlanilhaMarkowitz = Workbooks.Add Dim currentSheet As Worksheet Dim sheetIndex As Integer sheetIndex = 1 'Changes xlam property to false so I can copy Xlam sheets to new wb ThisWorkbook.IsAddin = False ThisWorkbook.Activate 'Copy Xlam's sheets to new workbook Sheets("Hidden").Visible = True 'this workbook was very hidden so I make it visible to copy Sheets("Hidden").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) Sheets("Hidden").Visible = xlVeryHidden Sheets("Calculos").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) Sheets("Pesos").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) Sheets("Atributos").Visible = True 'this workbook was very hidden so I make it visible to copy Sheets("Atributos").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) Sheets("Atributos").Visible = xlVeryHidden Sheets("Correl").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) Sheets("Fronteira").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) ThisWorkbook.IsAddin = True Exit Sub LabelErro: ThisWorkbook.IsAddin = True End Sub 

奇怪的是,如果我按F8执行这个代码(一步一步),它完美的工作。 但是,如果我正常运行此代码或使用F5它只复制工作表(“隐藏”)。

我已经设置了一个断点

 Sheets("Hidden").Visible = True 

按F8直到两个潜艇的末端使其工作。 按F5不会。

不要依赖。 激活 。 将工作表复制到新工作簿的操作正在改变活动工作簿。

 Sub GeneratesWorkbook() On Error GoTo LabelErro Dim PlanilhaMarkowitz As Workbook Set PlanilhaMarkowitz = Workbooks.Add Dim currentSheet As Worksheet Dim sheetIndex As Integer sheetIndex = 1 With ThisWorkbook 'Changes xlam property to false so I can copy Xlam sheets to new wb .IsAddin = False 'Copy Xlam's sheets to new workbook .Sheets("Hidden").Visible = True 'this workbook was very hidden so I make it visible to copy .Sheets("Hidden").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) .Sheets("Hidden").Visible = xlVeryHidden .Sheets("Calculos").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) .Sheets("Pesos").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) .Sheets("Atributos").Visible = True 'this workbook was very hidden so I make it visible to copy .Sheets("Atributos").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) .Sheets("Atributos").Visible = xlVeryHidden .Sheets("Correl").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) .Sheets("Fronteira").Copy Before:=PlanilhaMarkowitz.Sheets(sheetIndex) .IsAddin = True End With Exit Sub LabelErro: ThisWorkbook.IsAddin = True End Sub 

请参阅如何避免使用Excel中的selectVBAmacros来获取更多的方法来摆脱依靠select和activate来实现您的目标。