【VBA】コード作成に詰まってしまった時
VBAでコードを作成してる場合に
「この処理はどうすれば可能なのだろう?」と
詰まってしまったときには、
以下の2つを(或いは2つを順に)試してみてください。
■マクロの自動記録
■ヘルプ機能
それでは見ていきましょう。
【マクロの自動記録】の活用
実は【マクロの自動記録】は「実行したい処理に必要なオブジェクト・プロパティ・メソッドについて分からない事をExcel自身に聞く」機能であります。
例えば
A1のセルを黄色で塗りつぶししたいのだけど、黄色って選択できるの…?そんな場合は自動記録を活用すると、以下のようなコードが得られます。
Range("A1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.Color の部分に注目すると”65535” とあるので、
「これが黄色か!」と分かるわけです。
また、仮にプロパティが分からなくても、
ここでオブジェクトはRange(“A1”).でInterior、
colorプロパティを使えば色が変更出来そうだ、とVBAのコード作成に少し慣れていれば分かってくるかと思います。
余分な部分(すなわち色に関する部分)を除けば
Range(“A1”).Interior.Color = 65535
とすればセルを黄色く塗りつぶす事が出来る、と目途が立ちますね。
このように、処理方法が分からない場合は、まずは
自動記録を細かく実施していけば、解決できると思います。
【ヘルプ機能】を活用する
もし、マクロの自動記録で導き出されたコードの中に分からない単語が出てきた場合は、ヘルプ機能を使い調べ、理解を深める事が出来ます。
活用方法
VBEウインドウ上で調べたい単語を選択し(もしくはカーソルを持って行って)、【F1キー】を押すとMicrosoft社のオンラインヘルプサイトにアクセスできます。※その他VBEのツールバーからもアクセスできます。
もしもGoogle等の検索エンジンを活用する場合は
Vba [検索したいワード] docs
で検索してみてください。
では、例として [ PasteSpecial Paste ] をヘルプで調べてみましょう。
それに伴い、例題です。
↑の画面のように、【A1セル】に有る値を【B1セル】に値貼付けした場合、これをマクロ記録を使うと下のようなコードが生成されます。
Range("A1").Select
Selection.Copy
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
Selection.Copy
Application.CutCopyMode = False
そして、値貼付け部分の[PasteSpecial]を選択
(もしくはカーソルを移動)してから、【F1キー】を押すと
ヘルプページの説明文は読みづらいものがあるかもしれませんが、あまり細かい箇所にはこだわらず、「分かるところだけ」理解すれば良い、大枠で理解する気持ちで閲覧すると良いです。次第に慣れてくるだろう、という気持ちで丸暗記はしなくても良いのです。
【自動記録→ヘルプ機能活用】、これを繰り返していく中で、「少しずつでも曖昧だった点が明確になっていく、VBAの知識が蓄積されていく」この事が重要なのだと感じます。