2017-05-24 56 views
0

在Excel 2013中的.xlsm文件中運行VBA宏時出現問題。 執行時出現Sheets("SheetName").SelectSheets("SheetName").Activate錯誤的所有實例。表格(「Sheet Name」)select error

這是代碼的樣本的錯誤之一的一個示例:

Sub Reset_Additional() 
    Application.ScreenUpdating = False 
    Sheets("Additional").Select     <-- Code breaks on this line 

    Range("additionalcheckbox").Select 
    Selection.Value = False 
    Range("additional1").Select 
    Selection.ClearContents 
    Range("additional2").Select 
    Selection.ClearContents 
    Range("additional3").Select 
    Selection.FormulaR1C1 = "=RC[-11]" 
    Range("additional4").Select 
    Selection.FormulaR1C1 = "=RC[-18]" 
    Range("additional5").Select 
    Selection.FormulaR1C1 = "=RC[-18]" 
    Range("additional6").Select 
    Selection.FormulaR1C1 = "=RC[-9]" 

    Sheets("Macro Rules").Select 

    Range("B21").Select 
    Selection.FormulaR1C1 = "=RC[+1]" 

    Application.ScreenUpdating = True 
End Sub 

這是發生的VB錯誤:
VB Error

宏應該跨越幾個重置某些字段工作簿中的工作表。這個宏之前是在一個團隊成員使用早期版本的Excel處理文件之前工作的,從那之後就發生了這個錯誤。通過四處搜尋這些具體情況,我一直無法找到答案。由於時間限制,恢復到舊版本將是我的最後手段。任何解決這個問題的方法都很棒。

+2

注意:我建議閱讀[VBA最佳實踐 - 避免使用Select](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/9292/avoid-using-select-或激活) –

+0

@Peh感謝您的指導,將使用此前進 – Falseboolean

回答

1

,請不要使用.Selection 你應該使用:

Sub Reset_Additional() 
    Application.ScreenUpdating = False 

    With Worksheets("Additional") 
     .Range("additionalcheckbox").Value = False 
     .Range("additional1").ClearContents 
     .Range("additional2").ClearContents 
     .Range("additional3").FormulaR1C1 = "=RC[-11]" 
     .Range("additional4").FormulaR1C1 = "=RC[-18]" 
     .Range("additional5").FormulaR1C1 = "=RC[-18]" 
     .Range("additional6").FormulaR1C1 = "=RC[-9]" 
    End With 

    With Sheets("Macro Rules") 
     .Range("B21").FormulaR1C1 = "=RC[+1]" 
    End With 

    Application.ScreenUpdating = True 
End Sub 

如果您的代碼停止,您可能拼錯了工作表名稱。

2

這不是你的問題的解決方案,只有一個東西清單進行檢查:

  1. 不正確的工作簿是活動
  2. 的tabname是誤拼寫
  3. 的是保護/隱藏問題
相關問題