2014-01-28 26 views
0
Set Nightletter = ActiveWorkbook 

Nightletter.Sheets("XPT SUMMARY").Activate 

Range("A2").Activate 

對於此代碼還顯示對象在第二行上的必需錯誤。 我把它改爲對於命名工作表的對象所需的錯誤

Nightletter.Sheets("XPT SUMMARY").Activate 

Activesheet.Range("A2").Activate 

它也沒有工作。

+0

「ActiveWorkbook」中有多少張? –

+0

除非沒有工作表2,否則應該起作用。 –

+0

您的第二張工作表是隱藏的嗎?在第三行之前嘗試'如果Destsheet2.Visible <> -1然後Detesheet2.Visible = -1'。 –

回答

1

如果上述評論中的建議尚未解決您的問題,請嘗試執行以下操作。

打開Excel的新副本。創建一個新的工作簿,並將其另存爲「myWorkbook.xlsm」 - 一個啓用了宏的工作簿。確保它至少有兩張紙。

現在打開VBA編輯器,創建一個新的模塊,並輸入以下代碼:

Option Explicit 

Sub actSheet() 
    ' simple code to activate Sheet2 in myWorkbook.xlsm 
    Dim wb as Workbook 
    Dim ws as Worksheet 

    Set wb = Application.Workbooks("myWorkbook.xlsm") 
    Set ws = wb.Sheets("Sheet2") 

    If Not ws.Visible = xlSheetVisible Then ws.Visible = xlSheetVisible 
    ws.Activate 

End Sub 

這是利用了我認爲是最佳實踐你正在嘗試做的(雖然它幾乎從來沒有必要激活工作表 - 參見上面Siddharth Rout評論中的優秀鏈接)。具體做法是:

  • 開始Option Explicit(所以你必須聲明每個變量)
  • 包含註釋來描述你的函數
  • 聲明所用
  • 樹立引用從工作簿的表中的所有變量,並通過名稱:名稱不太可能比爲了改變
  • 確保您要激活的片可見

最後 - 比較你在做什麼與上面;如果你真的不知道區別,而且你仍然有錯誤,請回來告訴我們。