• ベストアンサー

エクセルでマクロの実行回数をセル参照するマクロ

いつもお世話になっております。 A1の数字の分だけ印刷するマクロを以下のように理解しました。 Dim n As Integer n = Application.WorksheetFunction.Sum(Worksheets("Sheet3").Range("A1")) ActiveWindow.SelectedSheets.PrintOut Copies:=n, Collate:=True これとは別に、 B1の数字(値)を参照して、 ”マクロ2”というマクロの実行回数を指定したいのです。 単に一回実行するだけなら Application.Run "マクロ2" ですね。 実行回数を指定する場合、 どのように記述すればよいかご教示ください。 よろしくお願いします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>A1の数字の分だけ印刷するマクロを以下のように理解しました。 A1に確実に数値が入力されているなら、 Dim n As Integer n = Worksheets("Sheet3").Range("A1") だけで十分です。 複数のセルが対象なら、sum関数(Application.WorksheetFunction.Sum() )を利用するのも良いでしょう。 繰返しなら、 For i=1 to n Call マクロ名 Next

oresama
質問者

お礼

ありがとうございました。 お蔭様で解決することができました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >A1の数字の分だけ印刷するマクロを以下のように理解しました。 コードをみる限りは、かなり変則的なものだと思います。確かに、SUMには、特殊な機能があるから、そのように、セルの代入値に対して、数値のみが、n に代入できますが、VBAらしくないコードです。 単に、Val 関数だけでもよいような気がします。  n =Val(Worksheets("Sheet3").Range("B1").Value) Val関数に批判的な人もいますから、 If IsNumeric(Worksheets("Sheet3").Range("B1").Value) Then   n = CInt(Worksheets("Sheet3").Range("B1").Value) End If でも、 「実行回数を指定する場合」、って、 >ActiveWindow.SelectedSheets.PrintOut Copies:=n, Collate:=True プリントアウトするのですから、n の値で回数が決まるのではありませんか? それに、Application.Run は、同じブック内なら、Call か、そのまま、プロシージャ名を指定すれば、Private キーワードが付いていない限りは、呼び出せるはずです。それとも、プリント印刷のシートの紙の順序は決めて出したいというのでしょうか?もし、そうなら、n は、1回にして、その印刷のPrintOut の部分をループさせ、サブルーチンにして、引数で回数を決めさせるようにすればよいと思います。

oresama
質問者

お礼

ありがとうございました。 何通りかの記述方法があるのですね。 今回は印刷するマクロを指定回数実行するのではなく、 別のマクロを指定回数実行させたかったのです。

すると、全ての回答が全文表示されます。
  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  Basicでは、ある処理を複数回繰り返すときにfor~nextという構文を使います。Basicの基本文法を勉強してください。 では。

oresama
質問者

お礼

ありがとうございました。 for~nextで検索して ほぼあたりがつきました。

すると、全ての回答が全文表示されます。

関連するQ&A