親父の隠れ家

親父の隠れ家

三十路を迎える親父が隠れて記事を書き始めました。

【VBA】気遣いのあるプログラムで嫌がられないようにしよう

f:id:CMY0630:20170627222012j:plain

とりあえず手を動かしながら慣れていくのが一番ではあるのですが、ただ書くのではなく見やすい書き方を身に付けた方が良いかと思います。

 

自分ひとりで行うものなら何でも良いんですけど仕事上共有を免れない場合は「汚いコード書くんだよなぁ…」とか言われないようにしたいものです。


とはいえ別に難しいものではなく気遣う心さえあれば問題ないんですけどね。


ではいってみよう。

 

目次

 


プロシージャ

これまでMsgBoxを用いたコードを書いたりしていましたが、実は「Sub~End Sub」の間に記述したコードのかたまりのことを言っています。

 

プロシージャ自体「手続き」という意味を持っていますが、実行したい処理の「手順書」というイメージを持つと分かり易いかと思います。

 

PCに「こういう手順でこういう処理をしてくれ!」とかそんな感じです。

 

SubプロシージャやFunctionプロシージャもありますが、とりあえずはイメージだけで良いと思います。


プロシージャ名のルール

「Sub test()」の場合「test」がプロシージャ名になるのですが、ルールがあるので余裕のある人は覚えておくと良いかと。

 

勉強中でもつい参考書の例に合わせるのが嫌で自分で名前を付けたりしちゃう人がいますが、ルールを知らないとエラーが出て涙することになります。

 

ルールといっても難しいものではなく「英数字」「ひらがな」「カタカナ」「漢字」「_(アンダースコア)」が使えますよってだけなんですけど、先頭文字に「数字」「_」は使えないのが肝かと。

 

つまり「test_01」はOKでも「01_test」や「_test」は使えないということです。

訳のわからない名前を付けると後から見直したり人に共有した際に困ったり困らせたりします。

 

 

インデント

例えば


Sub test()
  MsgBox "インデントって何じゃ"
End Sub


「Sub」と「End Sub」の書き始めの位置は同じなのに「MsgBox」だけTabキーでスペースを入れています。


このスペースのことをインデントって言います。

 

なんでインデントを入れるかというと単純に見やすくなるからです。


Sub test()
MsgBox "インデントって何じゃ"
End Sub

 

こうなってると3行ですら読みにくいですよね。

 

 

長すぎるコードは改行して見やすくしたい

VBAでは改行までを1つのステートメントと見るのですが、次の行に続けたいこともあるかと思います。

 

そういう時は「 _(半角スペースとアンダーバー)」を使えばいけます。


例えば

 

Sub test()
  MsgBox "インデントって何じゃ"
End Sub


上記のコードを


Sub test()
  MsgBox _
  "インデントって何じゃ"
End Sub


こんなふうに書くことができます。

 

 

コメントを付けたい

何がどこでどうなっているのか確認するのってアルファベットの羅列の中で行うのって結構重労働ですよね。


コード見た瞬間どんな処理を行っているのか判断できるような人には縁のない話かもしれませんが、共有することを前提としているのであればコメントは必須かと。

 

共有しなくても後々改修する際に何を思って作ったのか分からなくなることもあるのでやっぱりあると便利。というか見やすい。

 

書き方は「'」を使うだけ。

 

例えば…


Sub test2()
  Dim a As Integer
  Dim b As Integer
  Dim c As Integer

  a = 1
  b = 2
  c = 3

  MsgBox a
End Sub

 

これをいきなり見せられても「なんでaしか表示しないのにbとcの変数を用意しているんだ?」とか思う訳です。

 

Sub test2()
  Dim a As Integer '試験用変数
  Dim b As Integer '上期はbを使う
  Dim c As Integer '下期はcを使う

  a = 1
  b = 2
  c = 3

  MsgBox a
End Sub


コメントが書いてあれば「使用する時はMsgBox aのaをbに変えてあげれば良いのか」と分かるわけです。


Sub test2()
  Dim a As Integer '試験用変数
  'Dim b As Integer '上期はbを使う
  'Dim c As Integer '下期はcを使う

  a = 1
  'b = 2
  'c = 3

  MsgBox a
End Sub


邪魔であれば行ごとコメントに変えてしまうとか。

bとcの変数の宣言をしている行をコメントにしてしまっているので下の「b = 2」「c = 3」もコメントにしておかないと「変数の宣言がないのにいきなりb=とかc=とか言われても困るんですけど?」的なエラーが出るのでコメント化する際はご注意を。

 


まとめ

変な癖が付く前に見やすく改修しやすい書き方を身に付けましょう。

 

「読みにくいから書き方変えてくんない?」とか「あいつの書いたの読みにくいから一緒に組むの嫌なんだよなぁ」とか言われるの悲しいじゃないですか。

 

とかなんとか言って僕自身も結構テキトーに書くから共有を求められて焦って直したりしているわけですが…

 

昔条件分岐のコメントで「あっち向いてホイ!」とか書いてて直すのを忘れて提出したのはいい思い出。

プロシージャ名や変数をアニメ縛りとかにしてたりして訳が分からなくなることもザラです。

 

皆さんはこうならないように人を思いやり気遣えるよう書きましょう。