Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用代码中的列表循环excel宏,以便用户友好_Excel_Vba_Loops_Format - Fatal编程技术网

使用代码中的列表循环excel宏,以便用户友好

使用代码中的列表循环excel宏,以便用户友好,excel,vba,loops,format,Excel,Vba,Loops,Format,我写了一个宏,以便在打开文件时将4个透视图格式化为反转颜色。 像一个符咒一样工作,但是我需要它对每个选项卡重复这个操作。 我希望排除的选项卡数量与希望包含的选项卡数量相同。 另外一个问题是,我希望报告对用户友好, 如果以后需要一个额外的选项卡,那么我希望对VBA知之甚少的人能够轻松地进行调整,并通过一些简单的说明将选项卡添加到代码中。 我想知道是否有一种方法可以将宏应用到选项卡列表中 我已经得到的代码如下: Sub Auto_Open() ' ' Auto_Open Macro ' ' Keyb

我写了一个宏,以便在打开文件时将4个透视图格式化为反转颜色。 像一个符咒一样工作,但是我需要它对每个选项卡重复这个操作。 我希望排除的选项卡数量与希望包含的选项卡数量相同。 另外一个问题是,我希望报告对用户友好, 如果以后需要一个额外的选项卡,那么我希望对VBA知之甚少的人能够轻松地进行调整,并通过一些简单的说明将选项卡添加到代码中。 我想知道是否有一种方法可以将宏应用到选项卡列表中

我已经得到的代码如下:

Sub Auto_Open()
'
' Auto_Open Macro
'
' Keyboard Shortcut: Ctrl+s
'
    Sheets("Sheet 1").Select
    ActiveSheet.ChartObjects("Chart 2").Activate
    ActiveChart.SeriesCollection(1).Select
    Selection.InvertIfNegative = True
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 192, 0)
        .BackColor.RGB = RGB(255, 0, 0)
        .Solid
    End With
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(146, 208, 80)
        .BackColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
        .Solid
    End With
    Range("L23").Select
'
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.SeriesCollection(1).Select
    Selection.InvertIfNegative = True
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 192, 0)
        .BackColor.RGB = RGB(255, 0, 0)
        .Solid
    End With
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(146, 208, 80)
        .BackColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
        .Solid
    End With
    Range("L23").Select
'
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.SeriesCollection(1).Select
    Selection.InvertIfNegative = True
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 192, 0)
        .BackColor.RGB = RGB(255, 0, 0)
        .Solid
    End With
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(146, 208, 80)
        .BackColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
        .Solid
    End With
    Range("L23").Select
'
    ActiveSheet.ChartObjects("Chart 4").Activate
    ActiveChart.SeriesCollection(1).Select
    Selection.InvertIfNegative = True
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 192, 0)
        .BackColor.RGB = RGB(255, 0, 0)
        .Solid
    End With
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(146, 208, 80)
        .BackColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
        .Solid
    End With
    Range("L23").Select

您可以使用两种方法。
无VBA:
如果你想更新,你可以在一个特定的单元格(Es.A10)中加上一个“X”,如果你不想更新,则什么也不加。更新代码,如下所示:

For Each Sht In ActiveWorkbook.Sheets
    Sht.Select
    If Sht.Range("A10").Value = "X" Then
        ActiveSheet.ChartObjects("Chart 2").Activate
        ...
        Range("L23").Select
    End If
Next
带VBA:
添加包含要更新的图纸名称的简单数组。修改代码:

Dim Sht(1 To 10) As String
Sht(1) = "Sheet1"
Sht(2) = "Sheet3"
For e = 1 To UBound(Sht)
    If Sht(e) = "" Then Exit For
    ActiveWorkbook.Sheets(Sht(e)).Select
    ActiveSheet.ChartObjects("Chart 2").Activate
    ...
    Range("L23").Select
Next

如果添加选项卡,它们是否可能是要包括或排除的选项卡?