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 | このブログの読者になる | 更新情報をチェックする

2019年10月14日

メッセージを表示する / Excel / VBA

受注マスタから受注票を印刷させるためのマクロの基本的な試作は終わったんで、他に必要なマクロの試作を作ってみます。

メッセージの表示です。
例えば繰り返し処理(For〜Next)を伴うマクロは一旦実行すると途中で止めることはできません。
まして印刷(紙出し)のマクロだと間違って実行させてしまうと紙が無駄になってしまうかもしれません。ので、マクロを実行させる前に注意喚起のメッセージとか、確認のメッセージを表示させてあげます。
20191014-21.jpg

メッセージボックス
MsgBox("メッセージ", vbYesNo + vbQuestion + vbDefaultButton2, "タイトル")

メッセージ:表示させるメッセージ
vbYesNo:「はい」、「いいえ」のボタンを表示します
vbQuestion:質問のメッセージボックス
vbDefaultButton2:既定値を「いいえ」
タイトル:メッセージボックスのタイトル

で、ボタンを押した結果は
「はい」:vbYes
「いいえ」:vbNo

複数の条件分岐
条件分岐と言うとIF〜THEN〜ELSEとなるけど、複数の条件での分岐の場合は
Select Case 変数 を使います。
Case vbYes:「はい」を押した場合
   処理

メッセージ表示マクロ

Sub Macro1()

'変数A
Dim A

'問合せメッセージボックス表示
'ボタン「はい」、「いいえ」
'既定値「いいえ」

A = MsgBox("印刷設定は完了していますか?", vbYesNo + vbQuestion + vbDefaultButton2, "印刷設定確認")

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

'「はい」の場合
Case vbYes

'セルA1に1を表示する
Cells(1, 1) = 1


End Select

こんな感じです
20191013-13.JPG


マクロを実行すると
メッセージボックスが表示されます。
質問のメッセージボックスは“?”が表示されます
20191013-11.JPG

で、「はい」を押すとセルA1に1が表示されました
20191013-12.JPG

サンプルExcelファイル)20191013_メッセージボックス.zip

ちなみに、他のメッセージボックスは
vbCritical:警告
20191014-25.JPG

vbExclamation:注意
20191014-24.JPG

vbInformation:情報
20191014-23.JPG

と言うわけで、メッセージボックスは様々な場面でメッセージを表示させられる便利な機能ですが、あまり多用すると、「ウザッ!」ってなって、いちいち「はい」を押すのさえ「めんどくせー」ってことになるから、出来るだけ使わない方がいいと思います。
それに、最初は使用方法を補佐する目的で使いがちになってしまい、使い方を覚えてしまうと要らないメッセージになってしまいます。使い慣れてきてから、それでも必要なメッセージを表示させるようにした方が良いんじゃないかなー。。
20191014-22.jpg



前のページ:最終行を取得する
次のページ:マクロを実行するマクロ

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



 ランタンって言うと、停電の時やキャンプなどで使用する灯りってイメージだけど、LEDになって乾電池でも長時間使用できるようになってからインテリア照明としても使用できるおしゃれな物も増えてきました。
 そんな中、満を持しておしゃれ家電メーカーのバルミューダが素敵なLEDランタンを発売しました。
 キャンドルのように揺らめく光や、調光機能による明るさレベルに応じて変化する光の色など、まったりしてしまう優しい灯りです。




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

2019年10月12日

最終行を取得する / Excel / VBA

「7.4〜6を繰り返し最後の行まで行ったら終了します。」
さて、データの1行目から最終の行まで繰り返し処理をさせようとした時、最終の行っていくつだ!?
ってことで、最終行の行番号を求めるマクロを試作してみましょう。

Excelで最終行に移動するのはどうやってますか?
ボクは主に「ctrl」+「↓」でやってるんですが、たまに途中に空白行があるとその手前でストップしてしまい、イラッとする時があります。
20191012-03.JPG

なので、別の方法でやってみます。まずデータの範囲を下方向に外れたセルを選択します。
20191012-04.JPG

そこで「end」キーを押してENDモードにしてから「↑」キーを押すと下からデータ範囲の一番下のセルでストップします。データ範囲の上から下に行くのではなくてデータ範囲外の下か上にデータが入力されているセルを捜します。
20191012-05.JPG


最終行を選択
まずデータの範囲外の下の方の行き方ですが、Excelが用意しているワークシートの最終行まで一気にジャンプします。

Cells(Rows.Count, 1)

Excelのバージョンに関わらず最終行が Rows.Count となります

ENDモードで上方向にジャンプ
End(xlUp)

ジャンプ先の行番号は
End(xlUp).Row となります。


それでは、データ範囲の最終行を取得するマクロです

Sub macro1()

'nを変数
Dim n

'列Aの最終行からENDモードで上方向にジャンプして
'データのあるセルの行番号をnに保管

n = Cells(Rows.Count, 1).End(xlUp).Row

'セルC1に変数nの値を表示
Cells(1, 3) = n


End Sub


こんなんです。
20191012-01.JPG

で、実行結果がこれ
20191012-02.JPG

サンプルExcelファイル)20191012_最終行数を取得する.zip






前のページ:繰り返し処理の試作(For〜Next)
次のページ:メッセージを表示する

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


なんか、最近は関東地方を直撃する台風が来るな〜 (*_*)
日本の昔からの課題は「治水」、毎年のようにどこかで水害が起きているけど、なかなか水を治めることが出来てません。
ってことは、住む場所はハザードマップを確認して水害が起きないような場所を選ぶのがベストだと思う。
あとは、家そのものが雨風や地震、水害になんかに強い構造になっているかですよねー。
屋根の構造とか、雨戸やシャッターが付いてるかとか、耐震性能がどうかとか。。。
「そこまで考えてられない」って言うのもあるかもしれないけど、ホント最近は想定外の自然災害が多いので、住居の安全性は家賃や駅からの距離以上に最優先で考えるべき条件なんだと思う。

停電になった時に、こんなんで発電したらちっとは足しになんのかなー。。。





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

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