今回もプチレッスンということで、1行マクロ的な簡単なものをご紹介していきたいと思います。
表題の<マクロで画面のサイズを変える>というのは、例えばマクロの実行中にExcel画面はたたんで、他の作業をするといった場合に、今日紹介する1行を入れておくと便利です。
(でもこれも「マクロの記録」だけで簡単にできるような話ですので今更紹介する必要もないかも知れませんが。。)
まず、エクセルを立ち上げて、「マクロの記録」を開始して、エクセルのWindows画面を掴んでちょっと移動してから、「マクロの終了」という手順をやってみてください。
これでできたプログラムを見れば、
++++++++++++++++++++++++++++―
Sub Macro1()
Application.Left = 8.5
Application.Top = 88.75
End Sub
++++++++++++++++++++++++++++―
と、こんな感じになっているかと思います。
(数字の部分は当然まちまちです。数字はPC画面左上端からエクセルのWindows画面の左上端までのキョリを示します。)
ここで、ちょっとこの数字の部分をいじって実行をしてみれば自分のPC画面の位置関係がよく分かると思います。
次に、もう一度「マクロの記録」を開始して、今度はエクセルのWindows画面のサイズをちょっと変えてみて、「マクロの終了」という手順をやってみてください。
これでできたプログラムは、
++++++++++++++++++++++++++++―
Sub Macro2()
Application.Width = 543.75
Application.Height = 465.75
End Sub
++++++++++++++++++++++++++++―
と、こんな感じになっているかと思います。
(数字の部分はこれも当然まちまちです。数字はWindows画面の幅と高さを示します。)
先ほどと同様に、ここでちょっとこの数字の部分をいじって実行をしてみれば、自分のPC画面のサイズ関係がよく分かると思います。
最近のPCでは横長タイプの幅の広い画面が多くなってきましたので(横に並べて同時表示ができるので)、これをうまく活用することでより作業がしやすくなるかと思います。
更に、もう一度「マクロの記録」を開始して、今度はエクセルのWindows画面を最小化してみて(画面右上の一番左側のボタンで)から、再び表示に戻して(タスクバーで)、「マクロの終了」とやってみてください。
これでできたプログラムは、
++++++++++++++++++++++++++++―
Sub Macro2()
Application.WindowState = xlMinimized
Application.WindowState = xlNormal
End Sub
++++++++++++++++++++++++++++―
と、こんな感じになっているかと思います。
この2行は同時に並べて使っても意味はないわけなんですが、この2行の間にちょっと時間の掛かるような処理を挟んで、待ってる間に他の作業をするとか、
ユーザーに(自分の作ったマクロを使ってもらう他人に)なるべく処理を見せたくない、といった場合にも使えると思います。
あと、ちなみに画面の最大化なら
Application.WindowState = xlMaximized
ですね。(マクロの記録で確認してみてください。)
今回もプチレッスンということで、1行マクロ的な簡単なものを
ご紹介したいと思います。
表題のマクロで<四捨五入する方法>ですが、これに関係するのは
主には実数計算をするエンジニアリング系の方ですね。お金の計算等
整数処理が主な事務系の方はあまり関係しないかとは思いますが、
もしかすると、時期に消費税が8%になる(実に中途半端な数字に・・)
ということのようなので、お金の計算時に端数(1円未満)が問題になって
くる場合もあるかも知れませんので、今回はこのテーマをお話しします。
それで、端数の扱いというのは基本的に「切り捨て」「切り上げ」
「四捨五入」と、まあこの3つしかないわけですが、消費税の場合
で言えば、1円未満の端数が出た時の法律上の決まりはないということ
なので、大体のお店などは切り捨てで会計されるわけですが、中には
私がよく行くガソリンスタンドなんかの伝票をよく見てみると四捨五入
になっていたりします。
当然ですが、そうしたお店のレジ計算というのは、レジの機械の中に
組み込まれたプログラムによって計算が行われているわけです。
特にその辺の端数計算というものの扱いを気にしていないシステムの
場合には、そのプログラム言語の仕様によってそれが変わってきます。
で、ここで勉強しているマクロのVBA言語の場合で言うと
それが「切り捨て」となっています。これは感覚的に言えば、VBAの
場合のデフォルトは端数切り捨てです。
(プログラム言語によってそれが「四捨五入」になっているものも
あれば、中には「切り上げ」になるものもあります。)
というわけで、法律上の規定が無いということで特に厳密に気にして
いないレジ計算の場合は、プログラムの言語依存で切捨てなのか四捨
五入かということが決まります。
話がそれましたが、
一般的にはVBAで四捨五入したい場合には、ExcelのROUND関数という
ものを使うと思うわけですが、今回は特に応用がきくように(Accessとか
五捨六入とかの)オーソドックスな昔ながらのこのやり方というものを
ご紹介します。
その方法というのは、言葉で言い表すと
「0.5を足してから切り捨てる」
というだけです。これを数式で書くと、
a = Int(d + 0.5)
となります。(Intは少数点以下を切捨てする関数です。)
例えば、
d = 5.4 だったとすると、答えは a = 5 で
d = 5.5 なら 答えは a = 6 となります。
なので、もし「五捨六入」をしたい場合なら 0.4 を足せばよい
という具合になります。
また、「少数点の第2位」を四捨五入したいという場合なら、
「10倍してから0.5を足して切り捨てて10で割って戻す」
というようにしますので、これを数式で書くと
b = Int((d * 10 + 0.5)) / 10
このようになります。
なお、負数の場合にはFix関数というものを使うことになりますが
これは少々話がややこしくなるので今回は割愛させていただき
またいずれ。