プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
ExcelVBA、複数のセルの値を取得する(飛び飛びのセルの値も取得してみるよ)
まずは連続したセルの値を取得してみます。
こちらは単純です。

var1 = Range("A1:C5").Value

のように

var1 = Range("【選択範囲の左上のセル】:【選択範囲の右下のセル】").Value

を実行すると、選択範囲内のセルの値が配列形式で取得できます。
サンプルコードは、例えば、こんな感じφ(--)

Sub ボタン3_Click()
    Dim var1 As Variant

    'A1からC3までの値を取得
    var1 = Range("A1:C3").Value

    'A1からA3までの値を表示
    MsgBox var1(1, 1) & ":" & var1(2, 1) & ":" & var1(3, 1)

    'A1からC1までの値を表示
    MsgBox var1(1, 1) & ":" & var1(1, 2) & ":" & var1(1, 3)
End Sub

コメントを見れば分かると思いますが、一応、解説しておきましょう。

Dim var1 As Variant

var1 = Range("A1:C3").Value

で、A1セルからC3セルまでの範囲内の値を取得して、var1に入れています。

取得した値は配列形式です。
var1(1,1)には、A1セルの値が入っています。
var1(2,1)には、A2セルの値が入っています。
var1(3,1)には、A3セルの値が入っています。
同様に、
var1(1,2)には、B1セルの値が入っています。
var1(1,3)には、C1セルの値が入っています。

それを踏まえて

MsgBox var1(1, 1) & ":" & var1(2, 1) & ":" & var1(3, 1)

は、A1からA3までの値を表示しています。

MsgBox var1(1, 1) & ":" & var1(1, 2) & ":" & var1(1, 3)

は、A1からC1までの値を表示しています。

これが、連続したセルの値を取得する方法です。
次に、飛び飛びのセルから値を取得してみます。

飛び飛びのセルから値を取得するのは……本当に、やりたいですか?(--ゞ

取りあえず、連続したセルから取得するときのような

var1 = Range("A1,B3,C5").Value

では、取得できません。
これを実行すると、var1にはA1セルの値のみ入ります。

ということで、試しに、こんなコードを書いてみましたφ(--)

Sub ボタン4_Click()
    Range("A1,B3,C5").Select

    Dim selectedRange As Range
    Dim r As Range

    Set selectedRange = Selection

    For Each r In selectedRange
        MsgBox r.Address(False, False)
    Next r
End Sub

やっていることは

1.飛び飛びで複数セルを選択
2.選択したセルの値を1つずつ取得して表示

です。

でも、これを書いた後に思ったのですよね。
「普通に1つずつ取得すれば、いーんじゃね(--?」って。
ぶっちゃけ、これでも結果は同じですφ(--)

Sub ボタン5_Click()
    MsgBox Range("A1").Value
    MsgBox Range("B3").Value
    MsgBox Range("C5").Value
End Sub

カッコ付けたければ、配列にして

Sub ボタン6_Click()
    Dim i As Integer
    Dim ary1 As Variant

    '値を取得するセルを指定
    ary1 = Array("A1", "B3", "C5")

    'セルから値を取得して表示
    For i = LBound(ary1) To UBound(ary1)
        MsgBox Range(ary1(i)).Value
    Next i

End Sub

とかやれば、それっぽくなります。
今回はMsgBoxで表示していますが、取得した値を配列にでも突っ込めば
さらに、それっぽくなるでしょう。

「飛び飛びのセルの値を取得する」と解釈すると迷うかもしれませんが、

1.指定セルの値を取得する
2.「1.」を複数回繰り返す

と解釈すれば、難しくはないと思います。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:ExcelVBA  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事