VBA将列名从一张图纸复制到所有其他图纸
我被困在一个密码上 运行时错误424,需要对象 代码基本上是从第一个工作表名称“Generate”复制一列,并将复制的列转置到除“Generate”之外的所有其他活动工作表的标题行 有人能帮我纠正这个错误吗VBA将列名从一张图纸复制到所有其他图纸,vba,excel,loops,for-loop,Vba,Excel,Loops,For Loop,我被困在一个密码上 运行时错误424,需要对象 代码基本上是从第一个工作表名称“Generate”复制一列,并将复制的列转置到除“Generate”之外的所有其他活动工作表的标题行 有人能帮我纠正这个错误吗 Sub Test() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Generate" Then Worksheets("Generate").Range("B2
Sub Test()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "Generate" Then
Worksheets("Generate").Range("B2:B42").Copy
ActiveWorksheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Transpose:=True
End If
Next ws
End Sub
子测试()
将ws设置为工作表
对于ActiveWorkbook.Worksheets中的每个ws
如果ws.Name“生成”,那么
工作表(“生成”).范围(“B2:B42”).副本
ActiveWorksheet.Range(“A”&Rows.Count).End(xlUp).Offset(1,0).PasteSpecial Transpose:=True
如果结束
下一个ws
端接头
首先尝试将列标题标签收集到数组中
sub test()
dim hdrs as variant, w as long
with worksheets(1)
hdrs = application.transpose(.range(.cells(2, "B"), .cells(.rows.count, "B").end(xlup)).value2)
end with
for w=2 to worksheets.count
with worksheets(w)
.cells(1, "A").resize(1, ubound(hdrs)) = hdrs
'.cells(.rows.count, "A").end(xlup).offset(1, 0).resize(1, ubound(hdrs)) = hdrs
end with
next w
end sub
'alternate by worksheet name
sub test()
dim hdrs as variant, w as long
with worksheets("Generate")
hdrs = application.transpose(.range(.cells(2, "B"), .cells(.rows.count, "B").end(xlup)).value2)
end with
for w=1 to worksheets.count
if lcase(worksheets(w).name) <> "generate" then
with worksheets(w)
.cells(1, "A").resize(1, ubound(hdrs)) = hdrs
'.cells(.rows.count, "A").end(xlup).offset(1, 0).resize(1, ubound(hdrs)) = hdrs
end with
end if
next w
end sub
子测试()
尺寸HDR为变型,w为长型
附工作表(1)
hdrs=application.transpose(.range(.cells(2,“B”),.cells(.rows.count,“B”).end(xlup)).value2)
以
对于w=2的工作表。计数
带工作表(w)
.单元格(1,“A”).调整大小(1,ubound(hdrs))=hdrs
“.cells(.rows.count,“A”).end(xlup).offset(1,0).resize(1,ubound(hdrs))=hdrs
以
下一个w
端接头
'按工作表名称替换
子测试()
尺寸HDR为变型,w为长型
使用工作表(“生成”)
hdrs=application.transpose(.range(.cells(2,“B”),.cells(.rows.count,“B”).end(xlup)).value2)
以
对于w=1的工作表。计数
如果lcase(工作表(w).name)“生成”,则
带工作表(w)
.单元格(1,“A”).调整大小(1,ubound(hdrs))=hdrs
“.cells(.rows.count,“A”).end(xlup).offset(1,0).resize(1,ubound(hdrs))=hdrs
以
如果结束
下一个w
端接头
为什么要将“标题行”放入活动工作表.Range(“a”&Rows.Count).End(xlUp).Offset(1,0)
?将活动工作表.Range(改为ws.Range)(工作表(“生成”)可以是工作表,也可以不是工作表(1)。为了更好地使用OPs结构来循环工作表,我字面上理解了OPs,即“从第一个工作表名称“Generate”复制一列。她的工作表名称变化没有我可以预见的错误,可以很容易地应用到这里。