VBA別館・Python別館

64674

関数、マクロ、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回位は間違えると思います。 でもいつの間にか、こうするとこうなるというのが頭に入ってきます。 

続く


 

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.