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

ExcelVBA-基礎編

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

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

それぞれの扱い方法について説明します。

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

データの取得方法

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

取得した値を変数に入れて使う、セルを指定して値を直接使う、アクティブなセルの値を使う、選択しているセルの値を使う、などいくつか方法があります。

順番に説明します。

値を変数に入れて使う

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

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

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

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

文字列の取得

Sample1、2はどちらもA1に入力されている文字列を取得して、変数へ格納しメッセージボックスに表示させます。

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

数字の取得と計算

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

次のSampleは取得した数字を変数に格納して、掛け算の計算結果を出力します。

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

データ型のエラー

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

整数型のLongに文字列を入れた場合のエラーです。

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

直接セルのデータを使う

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

「セルの値×セルの値」のように名計算も直接セルに出力などが出来ます。

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

A1とA2に「10」と「20」を入力してSample6と7を順番に行うと図の様になります。

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

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

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

B2に「あおうえお」と入力しておき、B2をアクティブな状態で次のSampleを実行すると、B2に入力された文字列が表示されます。

Sub Sample8()    
    MsgBox ActiveCell
End Sub

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

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

図はActiveCellと同じ結果です。

Sub Sample8()    
    MsgBox Selection
End Sub

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

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

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

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

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

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

まとめ

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

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

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

今回使用したコードはコピーして頂けますと、ご自身の環境に合わせて使用出来るとは思います。

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