Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA将列名从一张图纸复制到所有其他图纸_Vba_Excel_Loops_For Loop - Fatal编程技术网

VBA将列名从一张图纸复制到所有其他图纸

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

我被困在一个密码上

运行时错误424,需要对象

代码基本上是从第一个工作表名称“Generate”复制一列,并将复制的列转置到除“Generate”之外的所有其他活动工作表的标题行

有人能帮我纠正这个错误吗

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”复制一列。她的工作表名称变化没有我可以预见的错误,可以很容易地应用到这里。