エクセルマクロの条件コード:全ての便が揃っていなくともエラーにならないようにする方法

このQ&Aのポイント
  • エクセルマクロを使用して自社便だけのデータ抽出を行っている際、全ての便が揃っていない場合にエラーが発生する問題があります。この問題を解決するためには、条件コードを修正する必要があります。
  • 修正するためには、ピボットテーブルのフィールドを操作する部分のコードを変更する必要があります。具体的には、各便の可視性を設定するコードを修正します。
  • 修正後のコードでは、全ての便を可視化する必要がなくなり、エラーが発生しなくなります。また、データがない便に関しては、ピボットテーブルに表示されないようになります。
回答を見る
  • ベストアンサー

エクセルマクロの条件コード

お世話になります。自社便だけのデータ抽出のため下のようなマクロにしたところ、データ上にどれか1便(例えば「西濃便」)がないとエラーとなります。 全ての便が揃っていなくともエラーにならないようにするためには、どうしたら良いでしょうか? With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("総数") .Orientation = xlDataField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("便 名") .PivotItems("ヤマト便").Visible = False .PivotItems("佐川便").Visible = False .PivotItems("日通便").Visible = False .PivotItems("西濃便").Visible = False .PivotItems("チャーター便").Visible = False End With Application.CommandBars("PivotTable").Visible = False End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.1

こんにちは。 --------------------------------------------- With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("総数") .Orientation = xlDataField .Position = 1 End With ● On Error Resume Next With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("便 名") .PivotItems("ヤマト便").Visible = False .PivotItems("佐川便").Visible = False .PivotItems("日通便").Visible = False .PivotItems("西濃便").Visible = False .PivotItems("チャーター便").Visible = False End With ------------------------------------------ ●の所に、On Error Resume Next を入れてみてください 「エラーが出たら次の行へ」、となります。 以上です。

9j11w5a
質問者

お礼

ありがとうございました。無事解決しました。

関連するQ&A

  • エクセルマクロの条件コード

    お世話になります。自社便だけのデータ抽出のため下のようなマクロにしたところ、データ上にどれか1便(例えば「西濃便」)がないとエラーとなります。 全ての便が揃っていなくともエラーにならないようにするためには、どうしたら良いでしょうか? With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("総数") .Orientation = xlDataField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("便 名") .PivotItems("ヤマト便").Visible = False .PivotItems("佐川便").Visible = False .PivotItems("日通便").Visible = False .PivotItems("西濃便").Visible = False .PivotItems("チャーター便").Visible = False End With Application.CommandBars("PivotTable").Visible = False End Sub

  • ピボットテーブルの操作をマクロの記録で

    退職者が残したエクセルファイルがあります。 ピボットテーブル生成の操作をマクロの記録を使って自動化したようです。 私はピボットテーブルを一度も操作した事が有りません。 ですがマクロの記録で作られた構文を VBEのF8キーで1行づつ動作させると画面が変化していくので どういう操作をしてマクロの構文が出来たのかは分かりました。 ですが以下の部分だけ画面上の変化が無く何をどうすると この構文が作成されるのかまったく分かりません。 ピボットテーブルに関する件を検索しようにも マクロを使わない手操作でどういう操作、どういう機能を使ったのかが わからないので検索する事も出来ません。 ピボットテーブルウィザードから ワークシートが挿入されてテーブルを作成する際に どういう操作を行うとこのような構文が出来るのか 教えてください。お願いします。 With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品番") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("仕入先") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品名") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("棚番") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("番号") .PivotItems("(空白)").Visible = False End With

  • Withステートメントの使い方

    プログラムの中で単一のシートやセルなど一つの処理内容 に対して一連の処理をする時「With」ステートメントで ひとくくりで記述できます。 と参考書やwebサイトで見ました。 とりあえず自力で作成した構文は完璧では有りませんが 「With」ステートメントを使えるようになりました。 さて以下の2種類の構文ですがマクロの記録で作成されています。 これを簡素化しようと思ったのですが すでにWith~End Withが散乱しています。 これはもう纏めるのは無理なのでしょうか? 私が思うに同じ単語が何回も出てくるので もう少し簡素化できるのではと挑戦しましたが 誤動作になってしまいます。 すでにWith~End Withでくくられていますので そのくくりはやはり崩すと駄目なのでしょうか? くくり内の2行→1行にする程度が限度でしょうか? これはどのようにすれば簡素化できるのか コツを教えてください。 With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("順番") .Orientation = xlColumnField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("区分") .Orientation = xlColumnField .Position = 2 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("区分名") .Orientation = xlColumnField .Position = 3 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品番") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("仕入") .Orientation = xlRowField .Position = 2 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品名") .Orientation = xlRowField .Position = 3 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("棚番") .Orientation = xlRowField .Position = 4 End With (省略) With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品番") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("仕入") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品名") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("棚番") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("順番") .PivotItems("(空白)").Visible = False End With ActiveWindow.SmallScroll ToRight:=3 With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("親品番") .PivotItems("(空白)").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("親品名") .PivotItems("(空白)").Visible = False End With

  • ピボットテーブルのマクロに関して

    ピボットテーブルのマクロを組む際に、必要な項目だけを表示させたいのですが、うまく行きません。 私は、マクロを学び始めて1カ月で、まだよくわかっていません。 下の例の場合 --------------------------------------------------------------- Sub Macro1() ' ' Macro1 Macro ' ' Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "データ!R1C1:R255C6", Version:=xlPivotTableVersion10).CreatePivotTable _ TableDestination:="Sheet2!R3C1", TableName:="ピボットテーブル2", DefaultVersion _ :=xlPivotTableVersion10 Sheets("Sheet2").Select Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("課名") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("地区名") .Orientation = xlColumnField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("売上額"), "データの個数 / 売上額", xlCount With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("課名") .PivotItems("営業第1課").Visible = False .PivotItems("営業第4課").Visible = False End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("地区名") .PivotItems("いなべ町").Visible = False .PivotItems("海南町").Visible = False .PivotItems("吉野川町").Visible = False .PivotItems("魚津町").Visible = False .PivotItems("篠山町").Visible = False .PivotItems("小諸町").Visible = False .PivotItems("小野田町").Visible = False .PivotItems("西予町").Visible = False .PivotItems("石垣町").Visible = False .PivotItems("滝川町").Visible = False .PivotItems("東根町").Visible = False .PivotItems("南足柄町").Visible = False .PivotItems("日南町").Visible = False .PivotItems("萩町").Visible = False .PivotItems("八日町町").Visible = False .PivotItems("浜田町").Visible = False .PivotItems("府中町").Visible = False .PivotItems("本荘町").Visible = False End With End Sub --------------------------------------------------------------- 「営業第2課・営業第3課」を表示させるために、一度、課名を全部 表示させてから「営業第1課・営業第4課」を非表示にしています。 そして、町に関しても、いったん全部を表示させてから、不必要な町を 非表示にしています。 これを、表示したい項目だけ選択できるようなマクロに修正は できないでしょうか。 実際のデータは会社から持ち出せないようになっていて、 わかりづらかったら済みません。

  • ピボットテーブルをVBAで管理

    ご教授下さい。 ・車両管理をしており、データの集計をとるため、ピボットテーブルを使用しています。 ・データは(日付)(車番)(品番)(品目)(数量)となっていまして、入力する際はフォームで記入しています。 ・品目は10個あり、シート上に品番表を作り、LOOKUP関数で参照しています。 (品番を入力すれば品目が自動転記される形です。) ・品目(品番)は使われない場合もあります。(ここでつまづいてます。) 品目毎にシートを分けて、10個ピボットテーブルを作っていて、 全品目を使用している場合問題はないのですが、 9品目しか使用していない場合でピボットアイテムエラーが出てしまいます。この部分を回避する策はありませんでしょうか? また、テーブルを10個に分けているため、コード自体もかなり長くなっています。もっと簡素化できる方法があれば併せて教えていただければと思います。 コードも載せておきます。(これと同様のものが10回ループしてます。) '軽油 Dim strDataRng1 As String strDataRng = ActiveWorkbook.Worksheets("燃料").Range("A1").CurrentRegion.Address(, , xlR1C1) ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "'燃料'!" & strDataRng).CreatePivotTable TableDestination:="", _ TableName:="軽油", DefaultVersion:=xlPivotTableVersion10 With ActiveSheet.PivotTables("軽油").PivotFields("車番") .Orientation = xlColumnField .Position = 1 End With ActiveSheet.PivotTables("軽油").AddDataField ActiveSheet.PivotTables( _ "軽油").PivotFields("数量"), "合計 / 数量", xlSum With ActiveSheet.PivotTables("軽油").PivotFields("日付") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("軽油").PivotFields("品目") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("軽油").PivotFields("品目") .PivotItems("軽油").Visible = True .PivotItems("灯油").Visible = False .PivotItems("ガソリン").Visible = False .PivotItems("ハイオク").Visible = False .PivotItems("オイル").Visible = False .PivotItems("エレメント").Visible = False .PivotItems("クーラント").Visible = False .PivotItems("バッテリー液").Visible = False .PivotItems("洗車").Visible = False .PivotItems("電球").Visible = False End With

  • マクロ実行時にエラーが出てしまいます

    マクロを記録し、それを実行しようとしたのですが、途中で下記のようなエラーが出てしまいます。 実行時エラー '1004': PivotTableクラスのPivotFieldsプロパティを取得できません。 黄色い矢印がとまっているのは下記の箇所です。 →With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先")← 自分なりに調べてみたのですが、選択範囲("E2:E1288"等の箇所)が違うデータでマクロを実行するとエラーになるのだと思っているのですが、選択範囲が毎回変わるのに対応できるコードの変更の仕方が分かりません。 もしよろしければ、アドバイスを頂けませんでしょうか。 コードの全体は下記になります。 Sheets("本体").Select Range("E1").Select ActiveCell.FormulaR1C1 = "品目分け" Range("E2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],1)" Range("E2").Select Selection.AutoFill Destination:=Range("E2:E1288") Range("E2:E1288").Select Sheets("計算結果").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,SourceData:= _ "本体!C1:C5").CreatePivotTable TableDestination:="[計算用.xls]計算結果!R3C1", _ TableName:="ピボットテーブル", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル").ColumnGrand = False With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .Orientation = xlColumnField .Position = 1 End With Range("E4").Select ActiveSheet.PivotTables("ピボットテーブル").AddDataField ActiveSheet.PivotTables( _"ピボットテーブル").PivotFields("数量"), "データの個数 / 数量", xlCount ActiveSheet.PivotTables("ピボットテーブル").PivotFields("データの個数/ 数量").Function = _xlSum With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .PivotItems("(空白)").Visible = False End With Range("A1").Select End Sub

  • マクロ実行時にエラーが出てしまいます

    マクロを記録し、それを実行しようとしたのですが、途中で下記のようなエラーが出てしまいます。 実行時エラー '1004': PivotTableクラスのPivotFieldsプロパティを取得できません。 黄色い矢印がとまっているのは下記の箇所です。 →With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先")← 自分なりに調べてみたのですが、選択範囲("E2:E1288"等の箇所)が違うデータでマクロを実行するとエラーになるのだと思っているのですが、選択範囲が毎回変わるのに対応できるコードの変更の仕方が分かりません。 もしよろしければ、アドバイスを頂けませんでしょうか。 コードの全体は下記になります。 Sheets("本体").Select Range("E1").Select ActiveCell.FormulaR1C1 = "品目分け" Range("E2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],1)" Range("E2").Select Selection.AutoFill Destination:=Range("E2:E1288") Range("E2:E1288").Select Sheets("計算結果").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,SourceData:= _ "本体!C1:C5").CreatePivotTable TableDestination:="[計算用.xls]計算結果!R3C1", _ TableName:="ピボットテーブル", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル").ColumnGrand = False With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .Orientation = xlColumnField .Position = 1 End With Range("E4").Select ActiveSheet.PivotTables("ピボットテーブル").AddDataField ActiveSheet.PivotTables( _"ピボットテーブル").PivotFields("数量"), "データの個数 / 数量", xlCount ActiveSheet.PivotTables("ピボットテーブル").PivotFields("データの個数/ 数量").Function = _xlSum With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .PivotItems("(空白)").Visible = False End With Range("A1").Select End Sub

  • マクロでピボットテーブルを作成したい

    こんばんは。マクロの自動記録を使って、ピボットテーブルを作成したのですが、記録した時のシート名とデータ範囲で記録されてしまいます。アクティブシートのデータがある範囲をピボットテーブルにしたい時は、どうすれば良いでしょうか? 以下のコードが自動記録で作成したコードです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "シート名!R1C1:R1000C30").CreatePivotTable TableDestination:= _ "", TableName:="ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品番号") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品名 ") .Orientation = xlRowField .Position = 2 End With Range("A9").Select ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品番号").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("数量 "), "データの個数 / 数量 ", xlCount With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("発送日 ") .Orientation = xlPageField .Position = 1 End With Range("A1").Select ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("発送日 ").Orientation = _ xlHidden With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("希望時期") .Orientation = xlColumnField .Position = 1 End With

  • エクセルのマクロ

    一定期間内の数量と価格をチェックするために エクセルでマクロを組みましたが下記のエラーが出てしまいます。 実行時エラー ’1004’ Worksheet クラスのPivot tablesプロパティを取得できません ソースは ' ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "データ!R1C1:R1000C19").CreatePivotTable TableDestination:= _ "[価格.xls]ワーク1!R1:R65536", TableName:="ピボットテーブル1", DefaultVersion:= _ xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("商品CD", _ "データ") With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量") .Orientation = xlDataField .Caption = "合計 / 数量" .Position = 1 .Function = xlSum End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価") .Orientation = xlDataField .Caption = "最大値 / 単価" .Function = xlMax End With Range("B1").Select With ActiveSheet.PivotTables("ピボットテーブル1").DataPivotField .Orientation = xlColumnField .Position = 1 End With End Sub です。 ストップしているのは↓の部分と思われます。 ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("商品CD", _ "データ") どうすればエラーが回避できるでしょうか。 ご教授お願いします。

  • マクロを利用してピポットテーブルを作成する方法を教えてください

    マクロを利用してピポットテーブルを作成する方法を教えてください。 仕事を効率化するために必要となりますが、マクロの知識がないため教えていただけないでしょうか。よろしくお願いします。 ピポットのデータとなりますエクセルの表は日付、金額、摘要の3列で行がその都度異なります。 日付    金額    摘要  月 日  ××円   ××  月 日  ××円   ×× 自動記録を利用し、作成しましたものは下記の通りです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "科目!R1C1:R30C3").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル1" ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="摘要", _ ColumnFields:="日付" ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("金額").Orientation = _ xlDataField Application.CommandBars("PivotTable").Visible = False Range("B4").Select Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _ False, True, False, True) End Sub どこをどのように変更すればよろしいでしょうか。

専門家に質問してみよう