Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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 - Fatal编程技术网

Excel 编写此脚本的更有效方法

Excel 编写此脚本的更有效方法,excel,vba,Excel,Vba,我正在使用vba打印许多excel图表。现在我有大约35张打印纸,所以我想知道是否有一个脚本比我目前使用的脚本更容易修改 Sheets("Euro Graph").Select ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.PlotArea.Select ActiveChart.PageSetup.RightHeader = "nominal LCU" ActiveChart.PageSetup.RightFooter = "&

我正在使用vba打印许多excel图表。现在我有大约35张打印纸,所以我想知道是否有一个脚本比我目前使用的脚本更容易修改

Sheets("Euro Graph").Select
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.PageSetup.RightHeader = "nominal LCU"
ActiveChart.PageSetup.RightFooter = "&D  &T"
ActiveChart.PageSetup.CenterFooter = "&A"
ActiveChart.PageSetup.LeftFooter = "&Z&F"
Selection.Width = 921
Selection.Left = 23
Selection.Top = 61
Selection.Height = 550
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
所以这很好用。对于每个要打印的图表,我首先选择工作表,然后通过参考图表编号激活要打印的图表。是否有一种有效的方法来更改任何图表打印规格(如更改页眉/页脚),而不必手动更改每个图表使用的每一块代码

编辑:我可以删除很多行,然后

Sheets("Euro Graph").Select
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PageSetup.RightHeader = "nominal LCU"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

但我仍然希望能够更改“标称LCU”,并使其影响我的所有代码。

这只是经过了一些测试,但它应该向您展示如何使用chartobjects在工作表中循环,以及如何识别LCU chartobject:

Sub SetLCUCharts()
Dim ws As Excel.Worksheet
Dim chtObject As Excel.ChartObject
Dim cht As Excel.Chart

For Each ws In ThisWorkbook.Worksheets
    If ws.ChartObjects.Count > 0 Then
        For Each chtObject In ws.ChartObjects
            If InStr(chtObject.Name, "LCU") > 0 Then
                Set cht = ws.ChartObjects(1).Chart
                With cht
                    .PageSetup.RightHeader = "nominal LCU"
                    .PrintOut Copies:=1, Collate:=True
                End With
            End If
        Next chtObject
    End If
Next ws
End Sub

每张图纸是否有一张以上的图表?如何确定似乎是唯一可变文本的
右标题
?绘图区域尺寸是否始终相同\对我每页大约有3-4张图表。右标题是一个棘手的标题,因为一张表通常有3个图表,一个有名义LCU、实际美元和名义美元。对于每种类型的图表,我都有一个模块。绘图区域的尺寸总是相同的。图表索引或图表标题是否一致地指示了这三种类型中的哪一种?例如,标称LCU始终为图表1,或始终命名或标题为某物?(如果不是,你应该考虑这样做)。如果是这样,那么编写代码就相当容易了。事实上,如果你想坚持使用三个模块,我现在就可以。事实上,我刚刚意识到你必须有三个例程,因为标题会改变。不,如果是一致的图表编号,我可以这样做。但我要说的是,实际上没有模式。一些标称LCU为1号或6号。标题名称是一致的。上面写着:“区号:国家名称,LN刻度,名义LCU x 10^9,数百万人。”这应该可以完成任务,谢谢!InStr()函数将对我有很大帮助。