Excel 格式化多个工作表

Excel 格式化多个工作表,excel,vba,Excel,Vba,我不太熟悉VBA,所以这个解决方案可能很简单,我只是不知道如何去做。我有10张工作表(成本比较1到10)。我需要用公式更新它们并重新格式化。目前我有以下代码: Sub Comparison1() ' Comparison1 Macro to change formulas to compare scenario # to as-is Sheets("Cost Comparison-1").Select Range("H8").Select ActiveCell.F

我不太熟悉VBA,所以这个解决方案可能很简单,我只是不知道如何去做。我有10张工作表(成本比较1到10)。我需要用公式更新它们并重新格式化。目前我有以下代码:

    Sub Comparison1()
' Comparison1 Macro to change formulas to compare scenario # to as-is
    Sheets("Cost Comparison-1").Select
    Range("H8").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(IF(('Costs As-Is'!RC-'Scenario-1'!RC)<>0,'Costs As-Is'!RC-'Scenario-1'!RC,""""),"""")"
    Range("H8").Select
    Selection.AutoFill Destination:=Range("H8:R8"), Type:=xlFillDefault
    Range("H8:R8").Select
    Selection.AutoFill Destination:=Range("H8:R1006"), Type:=xlFillDefault
    Range("H8:R1006").Select
    Sheets("Costs As-Is").Select
    Cells.Select
    Selection.Copy
    Sheets("Cost Comparison-1").Select
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveSheet.Outline.ShowLevels RowLevels:=1
End Sub
子比较n1()
'Comparison1宏更改公式以将场景#与原样进行比较
表格(“成本比较-1”)。选择
范围(“H8”)。选择
ActiveCell.FormulaR1C1=_
=IFERROR(如果((‘现状成本’!RC-‘情景1’!RC)0,‘现状成本’!RC-‘情景1’!RC,“”)
范围(“H8”)。选择
Selection.AutoFill目标:=范围(“H8:R8”),类型:=xlFillDefault
范围(“H8:R8”)。选择
Selection.AutoFill Destination:=范围(“H8:R1006”),类型:=xlFillDefault
范围(“H8:R1006”)。选择
表格(“按原样成本”)。选择
单元格。选择
选择,复制
表格(“成本比较-1”)。选择
单元格。选择
Selection.Paste特殊粘贴:=xlPasteFormats,操作:=xlNone_
SkipBlanks:=False,转置:=False
Application.CutCopyMode=False
ActiveSheet.Outline.ShowLevels行级别:=1
端接头
以上代码仅适用于一张图纸。我为每个工作表创建了10个单独的宏实例。然后创建一个宏来分别“调用”每个宏。我想要的是有一个结合了所有这些的宏。如果可能的话,如果工作表不存在,就不会像我目前得到的那样给出错误消息(“下标超出范围”)


提前感谢

循环浏览工作簿中的所有工作表

子工作表loop2()

端接头

此外,您还可以轻松更改每张工作表中的某种格式

Sub change_color()
For Each sht In ActiveWorkbook.Sheets
    Set rng = sht.UsedRange
        For Each cell In rng
            If cell.Font.ColorIndex = 3 Then
                cell.Font.ColorIndex = 0
            End If
        Next cell
Next sht
End Sub

你需要一个循环通过你的工作表。请阅读和阅读关于改进你的代码。有了这两篇文章,你应该能够实现你的愿望。感谢你的链接!我会看看它,并尝试解决一些问题
Sub change_color()
For Each sht In ActiveWorkbook.Sheets
    Set rng = sht.UsedRange
        For Each cell In rng
            If cell.Font.ColorIndex = 3 Then
                cell.Font.ColorIndex = 0
            End If
        Next cell
Next sht
End Sub