2011-08-01 58 views
0

我在Excel中有2個Sub()函數。兩者名稱不同,但代碼相同。但是當試圖一起運行時出現'Application defined'錯誤。問題出在哪裏相同的Excel宏在不同情況下給出錯誤

以下爲同一

Sub GT456T() 

Sheets("Sheet2").Rows("1:1").Select 
Application.CutCopyMode = False 
Selection.Copy 
Sheets("Sheet1").Select 
Rows("11:11").Select 
ActiveSheet.Paste 

End Sub 



Sub CopyRecord() 


Sheets("Sheet2").Rows("1:1").Select 
Application.CutCopyMode = False 
Selection.Copy 
Sheets("Sheet1").Select 
Rows("11:11").Select 
ActiveSheet.Paste 
End Sub 

我不明白爲什麼當運行一個一前一後把它交給錯誤的代碼我無法理解。如果我運行第一個宏它不會拋出一個錯誤,但是當第一個宏執行第一個宏後立即拋出一個'Application defined'錯誤。請幫助

+0

你的意思是「Application UNdefined」? –

+1

您說在運行第一個宏後運行第二個宏時發生錯誤。如果你運行第一個宏兩次,你也會得到錯誤嗎?或者第二個兩次?另外,你如何運行它們?手動,還是通過另一個代碼? –

+0

什麼「不同情況」? –

回答

3

沒有關於該問題的更多細節,這是猜測,但這裏是我的鏡頭吧:

.Select方法僅適用於範圍的父表是當前活動。當您運行任一宏時,Sheet1在完成運行時最終成爲活動工作表。然後,您嘗試在第一個「立即」之後再次運行宏,並且該宏想在Sheet2上選擇某些內容,但Sheet2未處於活動狀態。 Sheet1是。所以你得到一個錯誤。

那裏,那是我最好的,最有教育的猜測。

+0

是的,但是沒有這個聲明需要使sheet2再次激活'Sheets(「Sheet2」)。行(「1:1」)。選擇'? –

+0

@Sunny:不需要。您需要先激活工作表(Sheet.Activate),然後使用Range.Select選擇範圍。我認爲讓 - 弗朗索瓦是對的,這是問題所在。 –

+0

這是Excel VBA的衆多奇特之一。一些傑出的微軟工程師決定,你必須說'Sheets(「Sheet2」)。選擇'(或'.Activate'),然後用例如'表( 「Sheet 2中」)行。( 「1:1」)Select'。 –

相關問題