0

我正在使用 MS Excel 2007 和 Microsoft Visula Basic 6.5。

我想在工作表中选择一行,然后使用宏在此工作表和其他三个工作表中插入一行。我正在尝试下面的代码,但是当我运行它时,我在“工作表(“Rel. Planning Meeting”).Range(Lst)上收到错误“运行时错误'1004':应用程序定义或对象定义的错误”。启用”。

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 As Range”,但是在“Lst = ActiveCell.Row”上出现错误“运行时错误'91':对象变量或未设置块变量”。

非常感谢您的帮助。

问候,

格林

新代码:

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
4

2 回答 2

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
于 2013-07-18T05:51:32.630 回答
2

在代码的第 2 行中,您正在分配 lst,一个值(activecell.row),它是一个长变量。如果你写

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

这意味着前 - Worksheets("Rel. Planning Meeting").Range(4).Activate,如果你的 activecell.row 是 4。这不适用于范围。

如果要选择一行,请将现有行和所有其他类似行更改为 -

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

我建议尽可能不要在工作表上选择任何内容,因为这可能会减慢执行时间。您的宏在这里是一个非常简单的宏,但最好避免选择或激活工作表上的内容。

希望这可以帮助。

于 2013-07-18T05:41:41.897 回答