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 ......等或者我应该做一些完全不同的事情吗?
你很亲密
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语句,不需要的操作(比如你来回粘贴值)等等.