2019年10月30日

Debug.Printの便利な使い方 / Excel / VBA

マクロ作って入る時に変数にちゃんと値が格納されているかとか、いちいち確認したくなる時ってありますよね。そんな時は Debug.Print を使いましょう!
VBAをコーディングしているコードウィンドウの下のイミディエイトウィンドウに表示させることができてとても便利です。

例えば、ワークシートのあるセルに入力した値を、変数に格納しそれを Debug.Printを使ってイミディエイトウィンドウに表示させてみます。

サンプルコード

Sub macro1()

'変数a
Dim a

'aにセルA1の値を格納
a = Cells(1, 1).Value

'イミディエイトウィンドウに「a=」で変数aを表示
Debug.Print "a=" & a

End Sub


こんな感じです。
20191030_02.JPG

ここで、ワークシートのセルA1に"4"を入力します。
20191030_03.JPG

で、マクロを実行させると
イミディエイトウィンドウに“a=4”と表示されました
20191030_01.JPG

サンプルExcelファイル)debugprint.zip



前のページ:
次のページ:

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!



 最近はradikoとか、インターネットでラジオ番組を聞けるようになったけど、ギガとか、バッテリーとか、気にせずに使いたいならやっぱリアルラジオでしょ!?






ラベル:Debug.Print
posted by haku1569 at 20:22| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年10月27日

一覧表から帳票を自動で印刷させる(完) / Excel / VBA

さて、色々な試作を行ってきましたが、これで一覧表(受注マスタ)から帳票(受注票)を印刷するマクロを完成させることが出来ます。

最終的に完成させるマクロを1回目と同じように言葉で表してみます。
関連する試作ページにリンクさせときますね。

  1. 受注マスタの受注票を印刷したいデータの「印刷」の列に“1”を入力する
  2. マクロを実行させます
  3. 受注票の印刷設定が完了しているか確認するメッセージボックスを表示する
  4. Excelのシートの最終行からデータ範囲の最後の行までジャンプしてその行番号を取得する
  5. 受注マスタのデータ範囲の一番最初の行に行きます
  6. 列「印刷」に“1”が入力されている場合は受注コードをシート受注票の受注コードに入力します。
  7. 受注票に受注コードが入力されるとVLOOKUP関数によって受注票が作成されます。
  8. 作った受注票を印刷します
  9. 次の行を見に行きます
  10. 6〜9をデータ範囲の最終行まで繰り返したら終了します。


受注マスタから受注票を印刷するマクロ

Sub 印刷準備確認()

'変数a
Dim a

'変数aにはい、いいえの質問メッセージボックスの押された結果を格納
a = MsgBox("プリンタの設定は完了していますか?", vbYesNo + vbQuestion + vbDefaultButton2, "確認")

'押されたボタンaの確認
Select Case a

'はいの場合
Case vbYes

'マクロ受注票印刷を実行する
Call 受注票印刷

'いいえの場合終了
Case vbNo

End Select


End Sub

―――――――――――――――――――――――――――――――――――――
Sub 受注票印刷()

'変数i、n、s
Dim i
Dim n
Dim s


'シート受注マスタを選択
Worksheets("受注マスタ").Select

'nにデータ範囲の最後の行番号を格納
n = Cells(Rows.Count, 1).End(xlUp).Row

'iが2からnまで繰り返し処理(データ範囲が2行目から)
For i = 2 To n

'列「印刷」が"1"の時
If Cells(i, 2) = 1 Then

'sに受注コードを格納
s = Cells(i, 1).Value

'シート"受注票"のセルB4にsを入力
Worksheets("受注票").Cells(4, 2) = s

'受注票を印刷
Worksheets("受注票").PrintOut


End If

Next i

End Sub


とこんな感じになります。
20191027-01.JPG

20191027-04.JPG

印刷準備確認のメッセージボックスを表示させるマクロと受注票を印刷するマクロを分けていますが、同じモジュール(Module)に記入しています。
1つのモジュールに複数のマクロを記入すると自動的に線が引かれて区別されます
一連の処理を複数のマクロに分ける場合は1つのモジュールに記入した方が分かりやすいと思います。

受注マスタの列「印刷」に“1”を入力します。
20191027-03.JPG

と、この様な受注票が印刷されます。
20191027-02.JPG

サンプルExcelファイル)North Wind.zipで実際に実行させてみてください。
サンプルファイルの使い方ですが、
まず、受注票を実際に印刷させて(PDFで可)印刷設定を済ませておいてください。
マクロの実行のボタンとかは用意していません。マクロを表示させて「F5」キーを押すとか、ショートカットを設定するとか、原始的な方法で実行させてください。


前のページ:マクロを実行するマクロ
次のページ:

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!
実例1 一覧表から帳票を自動で印刷させる




昔「デンスケ」と言われたカセットテープレコーダがあったのをご存じでしょうか?
所謂、録り鉄とか、ヒコーキの音とか野外の生録をするテープレコーダーです。
マイクもそれなりのをステレオなので2本用意しなければなりません。でもそんなんで録音した蒸気機関車の近づく迫力のサウンドは鳥肌もんでした。。。



そえが今ではマイクも一体化してこんなカッコになっちゃいました。
そう言えば、パーソナルユースで音だけってあまり記録されないよね、動画としては音も一緒に当然撮られてるけど、音だけって無いよね。
なんでだ?音楽は音だけで聞くし最近はASMRとして音を聞いたりってのもあるけど、写真や動画の様に身の回りの音だけを録音するってのはあまり無いねー。。。スマホにもICレコーダーついてるんだから、もっと音遊びできるアプリができてもいいんじゃねぇ?とか思う。




posted by haku1569 at 22:36| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年10月20日

マクロを実行するマクロ / Excel / VBA

 メッセージを表示させて「はい」の時に次のマクロを実行させたりするときにCallで他のマクロを実行させます。
 また、色々な処理を組み合わせたマクロの場合、1つの長いマクロを作るよりも出来るだけ短いマクロを組み合わせた方が、その後の変更や更新がしやすかったりします。そんな時は複数のマクロをCallで続けて実行させます。
20191020_05.jpg

たとえば、こんなセルA1に100を入力するマクロがあります。
20191020-01.JPG

マクロを実行させるマクロ
Sub macro2()

'macro1を実行
Call macro1

End Sub

こんな感じ
20191020-02.JPG

これを実行させると、macro1が実行されます。で、
こうなります。
20191020-03.JPG


ちなみに、複数のマクロを連続して実行する場合は
20191020-04.JPG





前のページ:メッセージを表示する
次のページ:

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!
実例1 一覧表から帳票を自動で印刷させる



 最近は時間のチェックもスマホになって腕時計をしている人って少なくなっているようだけど、そういう意味では腕時計は単なる機能性だけでなく、ファッション性が求められているように思う。ファッション性と言っても、単なる装飾性だけではなく機能美こそが美しいとボクは思うのだけど。。。
 この、EPSONのスポーツウォッチ「TRUME」シリーズ はオールチタン製のボディーに光充電、GPSセンサー内蔵で高度、気圧、方位も表示する万能ウォッチだ!
 そうそう、高度で思うのだけど、今いる場所が海抜何メートルの場所なのか水害から身を守るための重要な指標ですよ。





ラベル:call
posted by haku1569 at 16:02| Excel VBA | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。