这是之前的版本,2020-4-1日写的,现在回过来再看当时的代码,真的觉得当时脑子有坑,为什么这么笨,要这么写。。。
Sub 新增工作表_核实工作簿中所有工作表表头是否一致()
Dim sht As Worksheet, i As Integer
i = 1
Sheets.Add.Name = "表头核实"
Sheets("表头核实").Move before:=Sheets(1) '将表头移动到最前面
'遍历所有工作表,将第一行内容写入
For Each sht In ThisWorkbook.Worksheets
sht.Rows(1).Copy Worksheets("表头核实").Rows(i)
i = i + 1
Next
Worksheets("表头核实").Activate
Columns(1).Select
Selection.Insert shift:=xlToRight
Range("a1:a1").Select
i = 1
'遍历所有工作表,将标题内容写入
For Each sht In ThisWorkbook.Worksheets
Cells(i, 1).FormulaR1C1 = sht.Name
i = i + 1
Next
End Sub
这是新的版本,2020-5-13日写的,代码简洁了一些,也避免了因为插入第一列会有出错的可能(最初是复制整行,但是如果整行都有格式,那么插入第一列的时候就会报错,无法插入)
Sub 新增工作表_核实工作簿中所有工作表表头是否一致_升级版()
Dim sht As Worksheet, i As Integer, arr() As Long, r_num As Long, j As Long
Sheets.Add.Name = "表头核实"
Sheets("表头核实").Move before:=Sheets(1) '将表头移动到最前面
'遍历所有工作表,将第一行内容写入,之前是将整行写进去,但是改进之后,现在只写入有内容的数据
For Each sht In Worksheets
sht.Activate
i = i + 1 'i 默认的初始值是0
Worksheets("表头核实").Cells(i, 1) = sht.Name
r_num = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column
sht.Range(Cells(1, 1), Cells(1, r_num)).Copy Worksheets("表头核实").Cells(i, 2)
Next
Worksheets("表头核实").Activate
MsgBox ("大哥,已完成")
End Sub