VBA別館・Python別館
関数、マクロ、VBAの使い分け - Tak
2018/05/25 (Fri) 21:18:26
エクセルには関数、マクロ、vbaと沢山プログラムみたいなものが有って、どう使い分けるのかに迷いますね。
専門的な分析ではありませんが、自分がプログラムを作るときにはこんな風に考えています。
1.シート上だけの作業のときは、使える関数が有れば極力それを使う。
2.繰り返しの処理が多い時は、マクロを作る。 実際はマクロもvbaで作られているので、自分でvbaでマクロ的な処理をさせる方が多い。
3.エクセル付随のユーザーフォームを使うようなプログラムのときは、当然vbaで書きますがcodeの簡素化のために、関数も積極的に使います。
簡単なvbaと言えど、素人プログラマーですので分からないことも沢山あります。そんな時は、
・自走マクロで動かしてみる
・エクセル関数のシート上で説明を見る
・Googleなどで調べる
・これでダメなときは、無料だけれど専門Q&Aページで質問する。
続く
Re: 関数、マクロ、VBAの使い分け - Tak
2018/06/13 (Wed) 20:32:41
① 自走マクロで動かしてみる
vbaでどう書くか分からないときは、マクロを自動発生させてそのcodeを見てみます。
例として、選んだセルの背景を赤くしてみましょう。 vbaでセルの背景を”赤くする”codeなんて覚えていませので、自走マクロを働かせて参考にします。
自走マクロでは次のように出ました。
Sub Macro1()
'
' Macro1 Macro
' Keyboard Shortcut: Ctrl+a
'
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
このうち背景を赤くするのは、次のcodeです。 分かり易くします。
With Selection.Interior
.Color = 255
End With
これは次のように簡単にできます。
Selection.Interior.Color=255 '255は赤色の意味です。
必要なのはこれだけです。
もう一度必要なマクロを書きだします。
---------------------------
Sub Macro1()
Selection.Interior.Color=255
End Sub
----------------------------
ここまでくればマクロの意味が朧気ながら分かりますので、次はvbaで書き直しましょう。
続く
Re: 関数、マクロ、VBAの使い分け - Tak
2018/06/14 (Thu) 20:15:45
② マクロ処理をVBAで書く
上記と同じ処理をするようにvbaで書きます。
Private Sub CommandButton1_Click()
ActiveCell.Select
Selection.Interior.Color = RGB(255,0,0) '赤になります。
End Sub
このcodeをジッと見ていると、RGB(0,255,0)なら緑とか、RGB(0,0,255)なら青とかに思えるでしょう、そうです、そうなります。
RGB(255,0,0)と書かずに、単に255と書いても動作はしますが、vbaのルールではRGB(x,y,z)と書くことになってます。
vbaでの書き方が分からないときは、自走マクロを動かしてみましょう。 そのあと試行錯誤でvbaに書き換えれば出来るようになります。 でも10回位は間違えると思います。 でもいつの間にか、こうするとこうなるというのが頭に入ってきます。
続く