【问题标题】:Add Worksheet name to first six rows将工作表名称添加到前六行
【发布时间】:2016-02-02 14:33:44
【问题描述】:

我的工作簿中有大量工作表。

我想在每个工作表 (A:A) 的顶部插入一个新行,并将每个工作表的名称插入到所有工作表的单元格 (B1:G1) 中。

我有第一部分,但有点卡在第二部分(即添加工作表名称)。我会很感激一些帮助。

更正的代码:

Sub NameSheets()
Dim sheetnm() As String
ReDim sheetnm(1 To Sheets.Count)
Dim i As Long
Dim ws As Worksheet

    For i = 1 To Sheets.Count
        Sheets(i).Rows("1:1").Insert Shift:=xlDown
        sheetnm(i) = Sheets(i).Name
        Sheets(i).Range("B1:G1") = Sheets(i).Name
    Next i

结束子

【问题讨论】:

  • 以下任何一项对您有用吗?如果是,请将其标记为正确。这是只有你能做的事情。它将关闭已回答的问题,并将奖励那些花时间提供帮助的人,以激励他们在未来帮助他人和自己。

标签: vba loops insert worksheet


【解决方案1】:

范围 ("B1:G1") = ActiveSheet.name 。这会将当前工作表名称添加到所有 6 列

【讨论】:

  • 您好,您的代码是一个很好的起点。但是,它只将工作表名称添加到用户当前正在查看的任何工作表中。上面更新的代码为工作簿中的所有工作表添加了一行和名称
【解决方案2】:

我修改了你的代码。试试这个:

Dim sheet As Worksheet
For Each sheet In Worksheets
    sheet.Rows("1:1").Insert Shift:=xlDown
    sheet.Range("B1:G1").Value = sheet.Name
Next sheet

【讨论】:

    【解决方案3】:

    这将在工作表中循环两次。第一个添加第一行并创建工作表名称数组。在从 B1 开始的第一行中输入该列表的第二个:

    Sub NameSheets()
    Dim sheetnm() As String
    ReDim sheetnm(1 To Sheets.Count)
    Dim i As Long
    
    For i = 1 To Sheets.Count
        Sheets(i).Rows("1:1").Insert Shift:=xlDown
        sheetnm(i) = Sheets(i).Name
    Next i
    
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Sheets
        ws.Range("B1").Resize(, UBound(sheetnm)).Value = sheetnm
    Next ws
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多