我不是很擅长这个,所以我曾经手动添加这些规则,因为那些只适用于已填充的单元格。
有什么方法可以自动化吗?感谢。
Range("D22:G22").Select
Selection.AutoFill Destination:=Range("D22:G23"), Type:=xlFillDefault
Range("D22:G23").Select
Range("I22").Select
Selection.AutoFill Destination:=Range("I22:I23"), Type:=xlFillDefault
Range("I22:I23").Select
Range("M22:N22").Select
Selection.AutoFill Destination:=Range("M22:N23"), Type:=xlFillDefault
Range("M22:N23").Select
Sheets("BN1").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
Range("C20:G21").Select
Range("K20:L20").Select
Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault
Range("K20:L21").Select
Sheets("BUM1").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
Range("C20:G21").Select
Range("K20:L20").Select
Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault
Range("K20:L21").Select
Sheets("Express").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
Range("C20:G21").Select
Range("K20:L20").Select
Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault
Range("K20:L21").Select
Sheets("DL1").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
答案 0 :(得分:4)
我猜你用宏录音机录制了上面的代码。宏录制器非常适合发现模糊命令的语法,但很难整理其输出。
考虑你的最后几句话。
Sheets("Express").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
Range("C20:G21").Select
Range("K20:L20").Select
Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault
Range("K20:L21").Select
Sheets("DL1").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
我可以用以下代码替换这些语句:
With Sheets("Express")
.Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault
.Range("K20:L20").AutoFill Destination:=.Range("K20:L21"), Type:=xlFillDefault
End With
With Sheets("DL1")
.Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault
End With
我认为你会同意看起来更整洁但需要一点解释。
考虑:
With Sheets("Express")
.Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault
.Range("K20:L20").AutoFill Destination:=.Range("K20:L21"), Type:=xlFillDefault
End With
With
表示我希望Sheets(“Express”)添加到以点开头的任何内容的前面,直到End With
。
所以这四行完全相同:
Sheets("Express").Range("C20:G20").AutoFill Destination:=Sheets("Express").Range("C20:G21"), Type:=xlFillDefault
Sheets("Express").Range("K20:L20").AutoFill Destination:=Sheets("Express").Range("K20:L21"), Type:=xlFillDefault
考虑:
Sheets("Express").Select
Range("C20:G20").Select
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault
Range("C20:G21").Select
宏录制器在您执行时记录了每个步骤。您切换到“Express”工作表,选择了范围C20:G20,然后将该范围复制到一行。
最好不要选择任何东西,如果你可以避免它,因为它会减慢你的宏,并且通常会使代码更难理解。
自动填充方法的语法是:
SourceRange .AutoFill目的地:= DestinationRange ,键入:= 类型
因此可以像我一样将所有参数包含在一行中。
考虑:
Type:=xlFillDefault
宏录制器将类型设置为xlFillDefault
,告诉编译器通过查看源数据来猜测所需的填充类型。在VB帮助中查找自动填充,您将获得所有填充类型的列表。选择你想要的那个。
<强>摘要强>
这是您所寻求的详细程度吗?如有必要,请回来提出更多问题。