VBA只能在某个工作表上运行

时间:2015-07-15 22:26:14

标签: excel vba excel-vba

每当运行宏时,下面的代码将在第2列上方插入一个新行。但是,如果我单击另一个工作表并运行宏,它会在该工作表中插入一个新行,而不是像我指定的那样在工作表1 中插入。有没有办法让它成为当我运行宏时,它只会在特定的工作表上执行那些操作,无论我在哪张纸上?

With Worksheets("Sheet 1")
    Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End With

3 个答案:

答案 0 :(得分:4)

在“行”之前加一个点

您的引用“Rows”正在使用任何活动行(相当于ActiveSheet.Rows),但该点将使用“With”块。

With Worksheets("Sheet 1")
    .Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End With

如果没有点,则甚至不考虑With块,代码等同于:

 Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

对于爆炸操作员(!)也是如此。

参考:

答案 1 :(得分:2)

对于单行代码,我不打扰使用With语句:

Worksheets("Sheet 1").Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

答案 2 :(得分:0)

添加'。'在行...

With Worksheets("Sheet 1")
     .Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End With