2016-08-12 8 views
1
Sub Print3() 

Dim sht As Worksheet 
Dim CurrentSheet As Worksheet 
Dim cht As ChartObject 

Application.ScreenUpdating = False 
Application.EnableEvents = False 

Set CurrentSheet = ActiveSheet 

For Each sht In ActiveWorkbook.Worksheets 
    If .Name <> "CHART OVERALL" Or "CHART TL" Or "CHART BL" Or "CHART TR" Or "CHART BR" Then 

    Else 
     For Each cht In sht.ChartObjects 
      cht.Activate 
      ActiveChart.PrintOut Copies:=1 
     Next cht 
    End If 
Next sht 

CurrentSheet.Activate 
Application.EnableEvents = True 

End Sub 

私はこれを動作させるように見えることはできません。私はこのコードのバリエーションをたくさん試してみましたが、なぜそれがかなり簡単なので動作しないのか分かりません。 Ifステートメントで名前を付けたワークシートごとに、それらのシートのチャートを印刷したいと思います。何かご意見は?実行する単純な印刷VBAスクリプトを取得できません

+0

まだこの手順には至っていませんが、別のシートの値に基づいて印刷するシートを選択することもできます。しかし、まず、これを取得する必要があります... – user2516746

+0

sht.name <> xまたはsht.name = yまたはsht.name = z .... –

+0

あなたはcerts:Applicationの最後にこの少し美しい部分を追加します。 ScreenUpdating = Trueそれがなくても遠くには届かないでしょう... – User632716

答えて

1

文はいくつかの作業を必要に応じてあなたの、真の画面更新=があまりにも...

Sub Print3() 

Dim sht As Worksheet 
Dim CurrentSheet As Worksheet 
Dim cht As ChartObject 

Application.ScreenUpdating = False 
Application.EnableEvents = False 

Set CurrentSheet = ActiveSheet 

For Each sht In ActiveWorkbook.Worksheets 
    If .Name <> "CHART OVERALL" and .Name <> "CHART TL" and .Name <> "CHART BL" and .Name <> "CHART TR" and .Name <> "CHART BR" Then 

    Else 
     For Each cht In sht.ChartObjects 
      cht.Activate 
      ActiveChart.PrintOut Copies:=1 
     Next cht 
    End If 
Next sht 

CurrentSheet.Activate 
Application.EnableEvents = True 
application.screenupdating = true 
End Sub 
+0

「無効なまたは修飾されていない参照」エラーが発生しています。 – user2516746

+0

うまくいけば私の答えが助けになるだろうが、私はシートの名前を取得するためにsht.Nameを使う必要があったのでこのエラーが出ていた。 –

1

は、だから私はカップルの事を修正追加。 if文の場合は、常にシート名を取得していない.Nameのために、いつもあなたのために本当に登録していたと思うので、あなたはあなたのelse文に一度も入っていませんでした。ここに変更されたコードがあります。

Sub Print3() 

Dim sht As Worksheet 
Dim CurrentSheet As Worksheet 
Dim cht As ChartObject 

Application.ScreenUpdating = False 
Application.EnableEvents = False 

Set CurrentSheet = ActiveSheet 

For Each sht In ActiveWorkbook.Worksheets 
    If sht.Name = "CHART OVERALL" Or sht.Name = "CHART TL" Or sht.Name = "CHART BL" Or sht.Name = "CHART TR" Or sht.Name = "CHART BR" Then 
     For Each cht In sht.ChartObjects 
      Debug.Print sht.Name 
      cht.Activate 
      ActiveChart.PrintOut Copies:=1 
     Next cht 
    End If 
Next sht 

CurrentSheet.Activate 
Application.EnableEvents = True 

End Sub 
関連する問題