2013-07-18 8 views
0

我正在使用MS Excel 2007和Microsoft Visula Basic 6.5。MS Excel VBA如何在當前工作表中插入一行以及其他三種

我想在工作表中選擇一行,然後使用宏在此工作表和其他三個工作表中插入一行。我正在嘗試下面的代碼,但是當我運行它時,出現錯誤「運行時錯誤'1004':應用程序定義的錯誤或對象定義的錯誤」工作表「(」相關計劃會議「)範圍(Lst)。啓用」。

Sub Copy1() 
Dim Lst As Long 
'save the rowNo 
Lst = ActiveCell.Row 

Worksheets("Rel. Planning Meeting").Activate 
Worksheets("Rel. Planning Meeting").Range(Lst).Activate 
ActiveCell.EntireRow.Insert 

Worksheets("Master Release Plan - HTSTG").Activate 
Worksheets("Master Release Plan - HTSTG").Range(Lst).Activate 
ActiveCell.EntireRow.Insert 

Worksheets("Inst. Gateway").Activate 
Worksheets("Inst. Gateway").Range(Lst).Activate 
ActiveCell.EntireRow.Insert 


Worksheets("CAB").Activate 
Worksheets("CAB").Range(Lst).Activate 
ActiveCell.EntireRow.Insert 

Worksheets("Rel. Planning Meeting").Range("A3:G5000").Copy _ 
Destination:=Worksheets("Master Release Plan - HTSTG").Range("A3") 

Worksheets("Master Release Plan - HTSTG").Range("A3:O5000").Copy _ 
Destination:=Worksheets("Inst. Gateway").Range("A3") 

Worksheets("Inst. Gateway").Range("A3:T5000").Copy _ 
Destination:=Worksheets("CAB").Range("A3") 

End Sub 

我已經試過「DIM LST作爲範圍」,然而後來我得到的錯誤「運行時錯誤‘91’:對象沒有設置變量或With塊變量」「LST = ActiveCell.Row」。

非常感謝您的幫助。

問候,

格林

新代碼:

Sub InsertRow() 

Dim Lst As Long 
'save the rowNo 
Lst = ActiveCell.Row 

'Insert a row in each worksheet at the currently selected cell. 
Worksheets("Rel. Planning Meeting").Rows(Lst).Insert 
Worksheets("Master Release Plan - HTSTG").Unprotect 
Worksheets("Master Release Plan - HTSTG").Rows(Lst).Insert 
Worksheets("Inst. Gateway").Unprotect 
Worksheets("Inst. Gateway").Rows(Lst).Insert 
Worksheets("CAB").Unprotect 
Worksheets("CAB").Rows(Lst).Insert 
End Sub 

回答

2
在代碼中的2號線

,要指定LST,一個值(activecell.row),這是一個長期的變量。如果你寫

Worksheets("Rel. Planning Meeting").Range(Lst).Activate 

,這意味着前 - 工作表(「版本規劃會議」)範圍(4).Activate,如果烏拉圭回合activecell.row爲4。這不會對範圍內工作。

如果你想選擇一排,然後改變你的現有生產線和所有其他類似的路線,那就是你有範圍(LST)到 -

Worksheets("Rel. Planning Meeting").Rows(Lst).Activate 

我建議在紙張上沒有任何選擇,只要因爲這可能會延緩執行時間。你的是一個非常簡單的宏,但最好避免選擇或激活工作表上的東西。

希望這會有所幫助。

+0

巴拉斯您好,我無法看到我的評論感謝你。我的appologies,我一定不能保存它。無論如何,非常感謝你,這個作品。問候,格林。 – Glyn

5

除了@Bharath的回答,它不是必須的,並且使用Select通常是個壞主意。
您插入行代碼就可以降低到

Worksheets("Rel. Planning Meeting").Rows(Lst).Insert 
Worksheets("Master Release Plan - HTSTG").Rows(Lst).Insert 
Worksheets("Inst. Gateway").Rows(Lst).Insert 
Worksheets("CAB").Rows(Lst).Insert 
+0

沒有看到您的評論。想要添加一些關於選擇的東西。所以編輯了我的評論。 +1顯示如何做到這一點。 –

+0

感謝Chris的改進,非常感謝。問候,格林。 – Glyn

+0

同意Chris +1 – Tarik

相關問題