通过所有工作表循环简单功能

mbu*_*e05 0 excel vba loops excel-2007 excel-vba

我正在尝试创建一个宏,它在工作簿中的每个工作表上执行以下操作.

Range("U10").Select
    FormulaR1C1 = "=R3C2"
    Range("U10").Select
    Selection.AutoFill Destination:=Range("U10:U19"), Type:=xlFillDefault
    Range("U10:U19").Select
    Selection.Copy
    Range("V10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("V10:V19").Select
        Selection.Copy
    Range("U10").Select
    ActiveSheet.Paste
    Range("V9:V19").Select
    Selection.ClearContents
    Range("A16").Select
    Selection.ClearContents
Run Code Online (Sandbox Code Playgroud)

我试过了:

Sub parse()

    Dim ws As Worksheet
            For Each ws In ThisWorkbook.Worksheets

   'The above code

        Next ws

End Sub
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎只是将此宏应用于当前活动工作表.

我有一种感觉,这与我没有正确引用范围有关(我是VBA的新手所以任何解释都可以帮助我找到解决方案!).IE浏览器.它应该像ws.Range ......等或者我应该做一些完全不同的事情吗?

nut*_*sch 6

你很亲密

Sub parse()

Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets

        ws.Range("U10:U19").FormulaR1C1 = "=R3C2"
        ws.Range("U10:U19").Value=ws.Range("U10:U19").value
        ws.Range("A16").ClearContents

    Next ws

End Sub
Run Code Online (Sandbox Code Playgroud)

正如Tim和Gimp所说,压缩代码的次数越多,维护的效率越高,越容易.这包括避免.Select语句,不需要的操作(比如你来回粘贴值)等等.