VBA循环是否在所有工作表上创建相同的标题?

VBA循环是否在所有工作表上创建相同的标题?,vba,excel,Vba,Excel,我想在所有工作表的第1行都放上相同的内容。我如何创建一个循环来实现这一点?我是VBA的新手。我录制了一个宏,但它仍然很长。18个工作表需要有这个。下面是录制的宏的外观 Sheets("C3 MBEL TET OPIS_CMA").Select Range("F1").Select ActiveCell.FormulaR1C1 = "PSTRIK" Range("A1").Select ActiveCell.FormulaR1C1 = "PRECID" Range("C1").Select Act

我想在所有工作表的第1行都放上相同的内容。我如何创建一个循环来实现这一点?我是VBA的新手。我录制了一个宏,但它仍然很长。18个工作表需要有这个。下面是录制的宏的外观

Sheets("C3 MBEL TET OPIS_CMA").Select
Range("F1").Select
ActiveCell.FormulaR1C1 = "PSTRIK"
Range("A1").Select
ActiveCell.FormulaR1C1 = "PRECID"
Range("C1").Select
ActiveCell.FormulaR1C1 = "PEXCH"
Range("J1").Select
ActiveCell.FormulaR1C1 = "PQTY"
Range("G1").Select
ActiveCell.FormulaR1C1 = "PCTYM"
Range("D1").Select
ActiveCell.FormulaR1C1 = "PFC"
Range("B1").Select
ActiveCell.FormulaR1C1 = "PACCT"
Range("K1").Select
ActiveCell.FormulaR1C1 = "PPRTCP"
Range("E1").Select
ActiveCell.FormulaR1C1 = "PSUBTY"
Range("H1").Select
ActiveCell.FormulaR1C1 = "PSBUS"
Range("I1").Select
ActiveCell.FormulaR1C1 = "PBS"

当然,除了使用不同的工作表名称外,此操作还会重复17次。

您可以使用数组存储要写入标题的工作表名称,然后通过该数组循环写入

Option Explicit

Public Sub WriteHeaderIntoSheets()
    Dim WorksheetNames As Variant
    WorksheetNames = Array("C3 MBEL TET OPIS_CMA", "Sheet1", "Sheet2", "Sheet3") 'your sheet names

    Dim ws As Variant
    For Each ws In WorksheetNames 
        With Worksheets(ws)
            .Range("F1").FormulaR1C1 = "PSTRIK"
            .Range("A1").FormulaR1C1 = "PRECID"
            .Range("C1").FormulaR1C1 = "PEXCH"
            .Range("J1").FormulaR1C1 = "PQTY"
            .Range("G1").FormulaR1C1 = "PCTYM"
            .Range("D1").FormulaR1C1 = "PFC"
            .Range("B1").FormulaR1C1 = "PACCT"
            .Range("K1").FormulaR1C1 = "PPRTCP"
            .Range("E1").FormulaR1C1 = "PSUBTY"
            .Range("H1").FormulaR1C1 = "PSBUS"
            .Range("I1").FormulaR1C1 = "PBS"
        End With
    Next ws
End Sub
或者,您也可以为标题行使用一个数组,这使其速度更快

Option Explicit

Public Sub WriteHeaderIntoSheets()
    Dim WorksheetNames As Variant
    WorksheetNames = Array("C3 MBEL TET OPIS_CMA", "Sheet1", "Sheet2", "Sheet3") 'your sheet names

    Dim HeaderRow As Variant 'your header values
    HeaderRow = Array("PRECID", "PACCT", "PEXCH", "PFC", "PSUBTY", "PSTRIK", "PCTYM", "PSBUS", "PBS", "PQTY", "PPRTCP")

    Dim ws As Variant
    For Each ws In WorksheetNames
        Worksheets(ws).Range("A1").Resize(ColumnSize:=1 + UBound(HeaderRow)).Value = HeaderRow
    Next ws
End Sub

可以使用数组存储要写入标题的工作表名称,然后通过该数组循环写入

Option Explicit

Public Sub WriteHeaderIntoSheets()
    Dim WorksheetNames As Variant
    WorksheetNames = Array("C3 MBEL TET OPIS_CMA", "Sheet1", "Sheet2", "Sheet3") 'your sheet names

    Dim ws As Variant
    For Each ws In WorksheetNames 
        With Worksheets(ws)
            .Range("F1").FormulaR1C1 = "PSTRIK"
            .Range("A1").FormulaR1C1 = "PRECID"
            .Range("C1").FormulaR1C1 = "PEXCH"
            .Range("J1").FormulaR1C1 = "PQTY"
            .Range("G1").FormulaR1C1 = "PCTYM"
            .Range("D1").FormulaR1C1 = "PFC"
            .Range("B1").FormulaR1C1 = "PACCT"
            .Range("K1").FormulaR1C1 = "PPRTCP"
            .Range("E1").FormulaR1C1 = "PSUBTY"
            .Range("H1").FormulaR1C1 = "PSBUS"
            .Range("I1").FormulaR1C1 = "PBS"
        End With
    Next ws
End Sub
或者,您也可以为标题行使用一个数组,这使其速度更快

Option Explicit

Public Sub WriteHeaderIntoSheets()
    Dim WorksheetNames As Variant
    WorksheetNames = Array("C3 MBEL TET OPIS_CMA", "Sheet1", "Sheet2", "Sheet3") 'your sheet names

    Dim HeaderRow As Variant 'your header values
    HeaderRow = Array("PRECID", "PACCT", "PEXCH", "PFC", "PSUBTY", "PSTRIK", "PCTYM", "PSBUS", "PBS", "PQTY", "PPRTCP")

    Dim ws As Variant
    For Each ws In WorksheetNames
        Worksheets(ws).Range("A1").Resize(ColumnSize:=1 + UBound(HeaderRow)).Value = HeaderRow
    Next ws
End Sub

我建议读一读:@Emalee你的代码按原样工作吗?@ashleedawg是的@ashleedawg是的,他们刚刚命名为Range,我建议阅读:@Emalee你的代码按原样工作吗?@ashleedawg是的@ashleedawg是的,他们刚刚被命名为Range。我刚刚想写一些类似的东西,但我喜欢你在工作表中为每个ws指定的方式。我还为标题行添加了一个数组,这使它更快。我尝试了一种变体,您不必在工作表中循环-手动选择相关工作表,同时按住Ctrl键并输入公式。似乎在VBA中,工作表和范围仍然需要选择,否则您得到的对象不支持此属性或方法,即使WorksheetWorksheetNames是一个工作表对象数组。@DarrenBartrup Cook Yes,不支持同时访问多个工作表中的范围。因此,这里没有循环的捷径。只是抢先一步而已+我正要写一些类似的东西,但我喜欢你在工作表中为每个ws指定的方式。另外,还为标题行添加了一个数组,这使它更快。我尝试了一种变体,您不必在工作表中循环-手动选择相关工作表,同时按住Ctrl键并输入公式。似乎在VBA中,工作表和范围仍然需要选择,否则您得到的对象不支持此属性或方法,即使WorksheetWorksheetNames是一个工作表对象数组。@DarrenBartrup Cook Yes,不支持同时访问多个工作表中的范围。所以这里没有循环的捷径。