2013-10-19 35 views
0

我剛剛記錄了這個宏,並將其粘貼到我的主代碼中,這是在一張表內。當我用我的代碼運行它時,它在這一點上引發錯誤,我不知道爲什麼。宏沒有在工作表中運行,Excel VBA

有什麼想法?

Sub pastem() 
Windows("Main.xlsm").Activate 
Sheets("Work").Select 
Range("B6").Select  'error at this position 
ActiveSheet.Paste 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.CutCopyMode = False 
Range("B6").Select 
End Sub 

由於

+0

[有趣的閱讀](http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) –

+0

在表模塊'範圍(...)'指的是一個範圍在模塊表示的工作表上,而不是活動工作表。另一個不使用激活/選擇的好理由。可能會更好地把代碼放在一個標準模塊(並擺脫那些選擇的) –

回答

3

Range("B6")是不合格的參考。標準模塊中的不合格範圍參考是指活動工作表。工作表類模塊中的非限定範圍引用是指由類模塊表示的工作表。由於您的代碼不在「Works」類模塊中,因此您試圖選擇不在活動頁面上的範圍,而這是您無法執行的範圍。以下是一個不依賴於某個表單處於活動狀態的示例。

Sub pastem() 

    With Workbooks("Main.xlsm").Sheets("Work").Range("B6") 
     .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
    End With 

    Application.CutCopyMode = False 

End Sub 
+0

非常感謝你。 –

+0

+ 1很好解釋。 –