Excel VBA セルのデータを取得する

ExcelVBA-基礎編

VBAでセルのデータを取得する方法をご説明します。

セルのデータを取得するには、RangeプロパティもしくはCellsプロパティを使用します。

セルのデータを取得する場合は、取得方法は基本的に一緒ですが、取得したデータをどの様に扱うかで、書き方が変わります。

その他のセルの操作方法については下記記事をご覧ください。

1.セルのデータを変数に入れる

使用頻度としては、このパターンが一番高い気がします。

この時注意する事は、変数の宣言で指定したデータ型と、取得しようとした型が一致しなかった場合、エラーになります。

数値は文字列として扱う事は出来ますが、その逆は出来ないため、Longなどの数値を扱うデータ型を指定した時に、文字列を取得した場合エラーになります。

Variantだとエラーになりません。

Sample1、2どちらも同じ動作をします。

Option Explicit

Sub Sample1()

    Dim myStr As String '文字列のデータ型
    
    myStr = Range("A1") 'セルA1の値を代入
    
    MsgBox myStr 'ダイアログボックスに表示

End Sub
Sub Sample2()

    Dim myStr As String
    
    myStr = Cells(1, 1)
    
    MsgBox myStr

End Sub

もちろん、取得したデータが数値であれば、変数に代入した後に計算にも使えます。

Option Explicit

Sub Sample3()

    Dim myInt1 As Long '整数のデータ型
    Dim myInt2 As Long
    
    myInt1 = Range("A1") 'セルA1の値を代入
    myInt2 = Range("B1") 'セルB1の値を代入
    
    Range("C1") = myInt1 * myInt2

End Sub
Sub Sample4()

    Dim myInt1 As Long
    Dim myInt2 As Long
    
    myInt1 = Cells(1, 1)
    myInt2 = Cells(1, 2)
    
    Cells(1, 3) = myInt1 * myInt2

End Sub

変数のデータ型を間違えるとこの様にエラーになります。

Option Explicit

Sub Sample1()

    Dim myStr As Long '整数のデータ型
    
    myStr = Range("A1") 'セルA1の「あいうえお」という文字をを代入
    
    MsgBox myStr 'ダイアログボックスに表示

End Sub

2.直接セルのデータを使う

変数に代入せず、そのまま指定したセルのデータを使用する事も出来ます。

セルの値×セルの値を直接セルに出力などが出来ます。

もちろん計算結果を変数に入れてから、セルに出力も可能です。

Option Explicit

Sub Sample5()
    
    Range("B1") = Range("A1") 'セルA1の値10をB1に代入
    
    Cells(2, 2) = Cells(2, 1) 'セルA2の値20をB2に代入

End Sub
Sub Sample6()
    
    Range("C1") = Range("A1") * Range("B1") 'セルA1とB1を計算してC1に出力
    
    Cells(2, 3) = Cells(2, 1) * Cells(2, 2) 'セルA2とB2を計算してC2に出力

End Sub

A1とA2に10と20を入力してSample5と6を順番に行うと図の様になります。

3.アクティブセルのデータを使う

アクティブなセルを取得するには、ActiveCellを使用します。

Option Explicit

Sub Sample7()
    
    MsgBox ActiveCell

End Sub

4.選択中のセルのデータを使う

選択中のセルの指定方法は、Selectionを使用します。

図はActiveCellと同じ結果です。

Sub Sample8()
    
    MsgBox Selection

End Sub

5.複数セルのデータを取得する

複数のセルのデータを一括で取得する場合、配列という概念が必要となるため、少し難しいかもしれません。

配列にセルのデータを格納すると、単一セルでも1列の範囲でも、複数セルでも2次元配列として扱われます。

配列に格納したデータを扱うには、格納されている要素の番号を指定する事で、取得出来ます。

Option Explicit

Sub Sample9()

    Dim myRange As Variant
    
    myRange = Range("A1:B5") 'A1~B5を配列(2次元配列)として格納
    
    MsgBox myRange(3, 2) '2次元配列の中のB3を指定

End Sub

格納された2次元配列は「配列名(行番号、列番号)」で指定できます。

配列については別記事にて、詳細を書く予定です。

6.まとめ

基本的に単一セルを扱う場合は、難しくありません。

変数を使う際には、型の不一致に気をつけましょう。

複数セルを扱う場合は、二次元配列を扱うことになるため、配列を扱うための知識が必要になります。

サンプル程度の内容で問題なければ、コピーして頂けますと、ご自身の環境に合わせて使用出来るとは思います。

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