ExcelVBA「え?ネスト?なんそれ?」クソコードを修正せよ

クソコードを修正するには

 

中編-1限目:「ネストが深い」を知る

 

ここは従業員100人弱の製造業である

元々VBAを使っているめがね後輩と、最近使い始めたアメビンは

空いた時間を使って業務用ツールを作っている

 

困ったアメビン
困ったアメビン

コードを改修していたら、凄い形態の発見したんだけど
やり方合ってる?

Excel VBA ネスト クソコード

めがね後輩
めがね後輩

おお・・・これは海物語の魚群リーチみたいですね

しかも左から右へ流れる「逆魚群」というプレミアです!

当選確定となります(`・∀・´)エッヘン!!

めがね後輩
めがね後輩

・・・・冗談はさておき、この様な状態を

「ネストが深い」と言うらしいですよ(´・ω・`)

困ったアメビン
困ったアメビン

え?ネスト?なんそれ?

めがね後輩
めがね後輩

業界では「クソコード」という分類に属するとか・・・

とりあえず段階的に修正をしていきましょう

 

中編-2限目:「ElseIf」と「End Ifの省略」を知る

 

Excel VBA IF ElseIf

めがね後輩
めがね後輩

まずは「Else」と次の「If」のところは「ElseIf」とまとめられますよ
こうする事で「End If」は最後だけで済みます

困ったアメビン
困ったアメビン

なんだ~そうだったのか!
これで魚群リーチとはおさらばだね・・・

Excel VBA IF ElseIf

めがね後輩
めがね後輩

あとは、処理が1つであれば「End If」は省略出来るんです
ついでに変数も組み合わせてみるとスッキリしますよ

困ったアメビン
困ったアメビン

ホントだ!すげぇ・・・

 

中編-3限目:「Select Case」を知る

 

めがね後輩
めがね後輩

あ、そういえば「Select Case」って知ってますか?
条件分岐後の処理が複数ある場合は、こっちの方が見やすいかもしれません

Excel VBA Select Case

めがね後輩
めがね後輩

「Select Case」の後に目標を記述して
次の行に「Case」と、目標の値、その値の場合の処理を記述します
つまり目標が記述した値の場合にどうするかという事です
最後に「End Select」を記述します

困ったアメビン
困ったアメビン

「Case」だから「場合」って事か
この場合に、この処理をするってのは読みやすいね

めがね後輩
めがね後輩

ちなみに「Target.Address」の後ろに「(0, 0)」を記述すれば
「”$行$列”」の「$」を省略できますよ

困ったアメビン
困ったアメビン

「$」ばかりで目がチカチカしたから、省略できるのも助かる

コメント

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