pickup

目次

Arrayにとりあえず突っ込む

こんにちは。伊川(@naonaoke)です。


上の記事で配列を紹介しました。

今回は、もっとコードをスッキリさせたいと思います。

配列を知っている人であれば、多分、今回紹介する子コードを記載するのではないでしょうか?

問題提起

 

前回、配列で条件文を作成した、(株)IKAWAの柄久 瀬瑠子(エク セルコ)です。

配列のコードをもっとスッキリ、わかりやすく記載する方法はないだろうか?

解決策

 

回答
sesuo2.jpg
単純な条件判定なら、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日目のように、東京だけを抽出したい場合に思いつきました。

たくさん条件文を書きたくないとおもい、配列にたどり着きました。

しかし、当時に私には、難しくて、条件をいくつも、いくつも記載してやりたいことを実現していました。

ここがポイント

 

ここがポイント
Function8.png
WorkSheet関数でも配列は使います。配列というと難しいと思う人もいるのではないでしょうか?しかし、他の言語を勉強すると、意外に早めの配列は登場します。他の言語を学んでからVBAを勉強すると、

配列は理解しやすいと思います。

反対に、VBAで配列を理解しておけば、

他の言語を勉強しても挫折は少なくなるかもれません。

 

まとめ

 

今回のまとめ
sesuko3.jpg
今回の配列は、序の口です。配列は勉強すれば、するほど奥が深いと思います。しっかり、1個、1個理解しようと思う、柄久 瀬瑠子(エク セルコ)なのでした。

今回のサンプルファイルは、No70です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事