多个表格,格式第1行粗体和自动换行

时间:2015-02-24 02:14:02

标签: excel-vba vba excel

好的,Excel VBA再次打败了我。我怀疑当我看到答案时,我会觉得自己像个白痴。幸运的是,随着年龄的增长,我逐渐适应了这一点。这是我的代码:

Option Explicit

Sub FormatAllSheets()
    Dim shNames()
    ReDim shNames(Worksheets.Count - 1)
    Dim shIndex As Integer
    For shIndex = 0 To UBound(shNames)
        shNames(shIndex) = Worksheets(shIndex + 1).Name
    Next shIndex

    Range("A1", "ZZ1").Select

    Sheets(shNames).Select
    Selection.Font.Bold = True
    Selection.WrapText = True
End Sub

非常感谢, 托尼利马

3 个答案:

答案 0 :(得分:3)

最简单的方法可能如下:

Sub FormatFirstRow()
    Dim sh As Worksheet

    For Each sh In ActiveWorkbook.Worksheets
        With sh.Range("A1:ZZ1")
            .Font.Bold = True
            .WrapText = True
        End With
    Next sh
End Sub

答案 1 :(得分:1)

user3561813只是打败了我的完整答案,但我会将With行更改为:

With sh.Rows(1)

这样你就不必假设第一行的宽度

答案 2 :(得分:1)

好的,玩这个,有一种方法可以做到没有循环,但问题是你必须做一个选择(选择是我的宠物讨厌):

Sub BoldFirst()
    Worksheets.Select
    Rows(1).select
    Selection.Font.Bold = true
    Selection.WrapText = True
End Sub

我不是100%肯定,但我认为Select Method是激活多张纸上的行所必需的。如果您不执行Select,它只会在活动表格中显示为粗体。

它可能会或可能不会比循环纸张更快。看看是否存在性能差异会很有趣。