目次
Arrayにとりあえず突っ込む
こんにちは。伊川(@naonaoke)です。
上の記事で配列を紹介しました。
今回は、もっとコードをスッキリさせたいと思います。
配列を知っている人であれば、多分、今回紹介する子コードを記載するのではないでしょうか?
問題提起
前回、配列で条件文を作成した、(株)IKAWAの柄久 瀬瑠子(エク セルコ)です。
配列のコードをもっとスッキリ、わかりやすく記載する方法はないだろうか?
解決策
単純な条件判定なら、Arrayに任せよう。
Array
値のリストをカンマ区切りで指定します。
Array(ArgList)に格納される配列のインデックスは0から開始します。
戻り値はバリアント型(Variant)になります。
すこし、難しいかもしれませんが、今回のコードをしっかり記憶することで、配列は理解しやすくなると思います。
Array 作成手順その1 データベースを確認
セルA1に東京という文字が含まれていたら、セルC15に東京を転記するというコードです。
Arrayを利用するには、戻り値はバリアント型(Variant)など、色々制約があります。
しかし、公式として憶えてしまえば、それほど苦になりません。
Array 作成手順その2 コードを仕込む
Sub Sample() Dim ws As Worksheet Set ws = Worksheets("AAA") Dim list As Variant Dim flag As Boolean Dim x As Long list = Array("東京", "中山", "札幌", "函館", "福島", "阪神", "中京", "京都", "小倉", "新潟") flag = False For x = 0 To UBound(list) If InStr(ws.Range("A1").Value, CStr(list(x))) > 0 Then flag = True Exit For End If Next x If flag Then ws.Range("C15").Value = list(x) Else ws.Range("C15").Value = "" End If End Sub
Boolean型の変数は上の記事で紹介しています。
配列の要素の最初から、最後まで、
For x = LBound(list) To UBound(list)
For x = 0 To UBound(list)
どちらでもいいと思います。
要するに、Arrayの格納された、最初から最後までの値をループさせるために使います。
以前に紹介したコードと比較してみてください。
今回の実行結果は割愛します。
それは、あまり面白くないからです。
ご興味のある人は、有料ですが、サンプルファイルを実行してみてください。
配列を必要としたきっかけ
今回の配列の要素は競馬場です。
第1回東京6日目のように、東京だけを抽出したい場合に思いつきました。
たくさん条件文を書きたくないとおもい、配列にたどり着きました。
しかし、当時に私には、難しくて、条件をいくつも、いくつも記載してやりたいことを実現していました。
ここがポイント
WorkSheet関数でも配列は使います。配列というと難しいと思う人もいるのではないでしょうか?しかし、他の言語を勉強すると、意外に早めの配列は登場します。他の言語を学んでからVBAを勉強すると、
配列は理解しやすいと思います。
反対に、VBAで配列を理解しておけば、
他の言語を勉強しても挫折は少なくなるかもれません。
まとめ
今回の配列は、序の口です。配列は勉強すれば、するほど奥が深いと思います。しっかり、1個、1個理解しようと思う、柄久 瀬瑠子(エク セルコ)なのでした。
今回のサンプルファイルは、No70です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。