excel 录制的宏如何循环100次? 我录制了一个宏:工作簿有sheet1,sheet2, 2个工作表。
录制了一个宏,来实现:建立sheet2的副本,副本以sheet1的第一列命名。并且副本中的“H8”单元格的值与sheet1第一列的相同。录制的宏只执行一次,如何添加循环,...
录制了一个宏,来实现:建立sheet2 的副本,副本以sheet1的第一列命名。并且副本中的“H8”单元格的值与sheet1第一列的相同。 录制的宏只执行一次,如何添加循环,来让宏能执行10次,100次?
==========
Sub Macro4()
'
' Macro4 Macro
'
'
Sheets("sheet2").Copy After:=Sheets(2)
Sheets("Sheet1").Select
Range("A2").Select
Selection.Copy
Sheets("sheet2 (2)").Select
Sheets("sheet2 (2)").Name = "A"
Range("C23").Select
Sheets("Sheet1").Select
Range("A2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("A").Select
Range("H8").Select
ActiveSheet.Paste
Range("H15").Select
End Sub 展开
==========
Sub Macro4()
'
' Macro4 Macro
'
'
Sheets("sheet2").Copy After:=Sheets(2)
Sheets("Sheet1").Select
Range("A2").Select
Selection.Copy
Sheets("sheet2 (2)").Select
Sheets("sheet2 (2)").Name = "A"
Range("C23").Select
Sheets("Sheet1").Select
Range("A2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("A").Select
Range("H8").Select
ActiveSheet.Paste
Range("H15").Select
End Sub 展开
2个回答
展开全部
sub 复制工作表()
n=sheets(1).cells(65536,1).end(3).row
for i=2 to n
shtname=sheets(1).cells(i,1)
sheets(2).copy after:=sheets(sheets.count)
with activesheet
.name=shtname
.range("H8")=shtname
end with
next
end sub
n=sheets(1).cells(65536,1).end(3).row
for i=2 to n
shtname=sheets(1).cells(i,1)
sheets(2).copy after:=sheets(sheets.count)
with activesheet
.name=shtname
.range("H8")=shtname
end with
next
end sub
追问
这个可以实现这个功能。感谢。
我只是不明白,我录制的宏,如何往里面加 循环语句呢?
你这个是新编了一个宏。
或者说,你这些语句是如何写出来的?
追答
录制宏的代码,由于有许多选择对象的操作,这些都是间接处理的办法,效率不高。
而我们是可以直接按照我们想要的目的,根据逻辑关系,直接操作工作表和单元格等对象,而无需先选中它。
——从你的目的来说,就是按照A2到A列最后一个单元格的值,命名以sheets(2)为模板新建的一系列工作表,同时把这些工作表中的H8单元格的值设为sheets(1)中A列中对应单元格的值。
所以,直接取得A列最后一个非空单元格的行号n,然后让变量i依次从2到n,取出A列中第i行单元格中的值,赋给变量shtname,让每次新复制的工作表的名字、和它的H8单元格中的值都等于这个变量。这样,目的就达到了。
展开全部
应该这样才好运行。
Sub 命名新工作表()
Dim n As Long
Dim i As Integer
Dim shtname As String
n = Sheets(1).Cells(65536, 1).End(3).Row
For i = 2 To n
shtname = Sheets(1).Cells(i, 1)
Sheets(2).Copy after:=Sheets(Sheets.Count)
With ActiveSheet
.Name = shtname
.Range("a1") = Sheets(1).Range("h8")
End With
Next
End Sub
Sub 命名新工作表()
Dim n As Long
Dim i As Integer
Dim shtname As String
n = Sheets(1).Cells(65536, 1).End(3).Row
For i = 2 To n
shtname = Sheets(1).Cells(i, 1)
Sheets(2).Copy after:=Sheets(Sheets.Count)
With ActiveSheet
.Name = shtname
.Range("a1") = Sheets(1).Range("h8")
End With
Next
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询