使用“ with语句”在不同的工作表上运行vba

时间:2019-07-02 09:43:37

标签: excel vba

我正在尝试在特定工作表上运行宏,然后在其他工作表上启动它。

我了解我可以为每一行代码选择“问题”表,但是我想知道为什么使用“ with Statement”时它不起作用(请参见下面的代码)。

Sub IncludeNew()

Application.ScreenUpdating = False

Dim wb As Workbook
Dim ws As Worksheet

Set wb = ActiveWorkbook
Set ws = Sheets("Occupancy")

With ws

    .Columns("C:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    .Columns("F:F").AutoFill Destination:=Columns("C:F"), Type:=xlFillDefault
    .Range("Quaterly").Columns(2).copy
    .Range("Quaterly").Columns(2).EntireColumn.Insert
    .Range("C6").copy
    .Range("Quaterly").Cells(12, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Application.ScreenUpdating = True
Application.CutCopyMode = False

End With

End Sub

我收到的错误消息是"Run-time error 1004" AutoFill method of range class failed。在实际工作表上运行时,效果很好!

错误发生在.Columns(“ F:F”)。自动填充目标:= Columns(“ C:F”),类型:= xlFillDefault

1 个答案:

答案 0 :(得分:0)

您快到了。您错过了.。尝试使用.... Destination:=.Columns("C:F").....

而且,声明工作簿变量而不使用它有什么意义呢?声明工作表变量时,可以使用wb.Sheets("Occupancy")