【VBA】「コードが長くて読む気が失せる…」そんな人へ。『Set』で劇的スッキリさせる方法!

【業務効率化】VBA
スポンサーリンク

「なんで私のコードはこんなに読みにくいんだろう…」

オフィスでモニターを見つめながら、そうため息をついたことはありませんか?

私も自分の書いたコードが読みづらいと感じたことは何度もあります。

例えば、こんなコードを書いていませんか?

【業務効率化】VBAの記事を見る

【Before】悪い例:目が滑る長いコード

Sub BadCode()
    ' A1セルの文字を太字にする
    Worksheets("Sheet1").Range("A1").Font.Bold = True
    ' A1セルの文字色を赤にする
    Worksheets("Sheet1").Range("A1").Font.Color = vbRed
    ' A1セルの背景色を黄色にする
    Worksheets("Sheet1").Range("A1").Interior.Color = vbYellow
    ' A1セルに"重要"と書き込む
    Worksheets("Sheet1").Range("A1").Value = "重要"
End Sub

正直、これを見るだけで「うっ…」となりますよね。

Worksheets(“Sheet1”).Range(“A1”) という呪文を4回も繰り返しています。

もしシート名が「Sheet1」から「売上管理」に変わったら?

…そう、4箇所すべて修正しなければなりません。1つでも忘れたらエラーです。考えただけで胃が痛くなります。

そこで登場するのが、オブジェクト変数という考え方です。

難しそうに聞こえますが、簡単に言うと「あだ名をつける」ということです。

Worksheets(“Sheet1”).Range(“A1”) という長い住所に、myCell(私のセル)という短いあだ名をつけてあげるのです。

このときに使うのがSet(セット)という命令です。

では、あだ名を使った「スッキリ版」を見てみましょう。コピペして動かしてみてください。

【After】良い例:Setを使ってスッキリ!

Sub GoodCode()
    Dim myCell As Range
    Set myCell = Worksheets("Sheet1").Range("A1")

    With myCell
        .Font.Bold = True           ' 太字
        .Font.Color = vbRed         ' 文字色:赤
        .Interior.Color = vbYellow  ' 背景:黄色
        .Value = "重要"             ' 文字入力
    End With
   
    ' 片付け(必須ではないです)
    Set myCell = Nothing
End Sub

いかがですか?

文字数は減りましたし、何より「どこを操作しているか」が一目瞭然ですよね。

もし操作するセルが変わっても、Set myCell = … の1行を変えるだけで、あとの処理はすべて新しいセルに適用されます。修正の手間は4分の1です。

ここがポイント!

数値や文字を入れるときは x = 1 のように書きますが、セルそのもの(オブジェクト)を変数に入れるときは、必ず先頭Setをつけます。

「この変数は、ただの数字じゃなくて、もっと偉いモノ(オブジェクト)が入るぞ!」と特別扱いしてあげるイメージです。

まとめ

  • 長いセル範囲には Set であだ名をつける。
  • コードが短くなり、読むストレスが減る。
  • 修正箇所が1箇所で済むので、ミスが激減する。

最初は「Setって書くの忘れた!」なんてこともあると思います。私も100回くらいやりました。

この書き方を習得すれば、スッキリしたコードが書けるようになっていきます。

メンテナンスも少し楽しくなっていくので、ぜひ試してみてください。

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました