この記事では、VBAを使ってセルに入力されている文字や数値、シリアル値、数式(計算式)を取得する方法を実際のVBAコードも含めて説明します。
セルからの値取得は、VBAを活用した自動化の基本的な動作です。例えば、セルに入力されている値の状態(大小)によって処理を分岐させる場合にも使います。
文字や数値、シリアル値、数式(計算式)、それぞれをセルから取得するためのVBAコードを紹介しますので、ご参考になれば幸いです。
※シリアル値については後述します。
VBA│文字を取得する
この章では、ExcelのセルA1に入力されている「VBAを覚えよう!」という文字列を取得するVBAコードを紹介します。文字列は変数「s」に取得し、正確に取得していることを確認するため、最後にメッセージボックスで表示する処理も加えています。
基本構文
object . Value
- object = 入力対象のセル位置
この例では、A1です - Value = 文字を取得する定型文
(Valueは値を代入するプロパティです)
Rangeプロパティ
Sub Sample()
Dim s As String
s = Range(“A1”).Value
MsgBox s
End Sub
Cellsプロパティ
Sub Sample()
Dim s As String
s = Cells( 1, 1 ).Value
MsgBox s
End Sub
VBA│数値を取得する
この章では、ExcelのセルA1に入力されている 1 という数値を取得するVBAコードを紹介します。数値は変数「i」に取得し、正確に取得していることを確認するため、最後にメッセージボックスで表示する処理も加えています。
なお、前章との違いは変数の型を「String → Long」に変えるだけです。
基本構文
object . Value
- object = 入力対象のセル位置
この例では、A1です - Value = 文字を取得する定型文
(Valueは値を代入するプロパティです)
Rangeプロパティ
Sub Sample()
Dim i As Long
i = Range(“A1”).Value
MsgBox i
End Sub
Cellsプロパティ
Sub Sample()
Dim i As Long
i = Cells( 1, 1 ).Value
MsgBox i
End Sub
VBA│シリアル値を取得する
Excelに日付を入力した際、Excelでは 2021/10/30 のように人間が認識しやすいように表示してくれますが、コンピューター内では、1900年1月1日を起算日として、入力された日までの日数で管理されています。
実際にExcelに日付を入力して、セルの書式設定で「標準」を選択してみましょう。下記のイメージのように数値が表示されるはずです。
このイメージ図の 44499 は、1900年1月1日から2021年10月31日までの日数を意味しています。
この章では、ExcelのセルA1に入力されている 2021/10/30 のシリアル値を取得するVBAコードを紹介します。シリアル値は変数「i」に取得し、正確に取得していることを確認するため、最後にメッセージボックスで表示する処理も加えています。
なお、前章同様、シリアル値も「String型」で取得することもできますが、ここでは「Long型」で取得します。
基本構文
object . Value2
- object = 入力対象のセル位置
この例では、A1です - Value2 = シリアル値を取得する定型文
(Valueは値を代入するプロパティです)
Rangeプロパティ
Sub Sample()
Dim i As Long
i = Range(“A1”).Value2
MsgBox i
End Sub
Cellsプロパティ
Sub Sample()
Dim i As Long
i = Cells( 1, 1 ).Value2
MsgBox i
End Sub
VBA│数式(計算式)を取得する
この章では、ExcelのセルA1に入力されている =SUM(A1:A2) という数式を取得するVBAコードを紹介します。数式は変数「s」に取得し、正確に取得していることを確認するため、最後にメッセージボックスで表示する処理も加えています。
基本構文
object . Formula
- object = 入力対象のセル位置
この例では、A3です - Formula = 数式を取得する定型文
(Valueは値を代入するプロパティです)
Rangeプロパティ
Sub Sample()
Dim s As String
s = Range(“A3”).Formula
MsgBox s
End Sub
Cellsプロパティ
Sub Sample()
Dim s As String
s = Cells( 3, 1 ).Formula
MsgBox s
End Sub
応用編:最終行を変数で取得する
最終行に入力されている数式を取得する
前節までは、数式が入力されているセルA3をVBAコード内で、直接、指定していましたが、VBAの最終行を取得するコードと組み合わせて、A列の最終行に入力されている数式をVBAで取得する実用的なコードを記述してみましょう。
Sub Sample()
Dim LastRow As Long
Dim s As String
LastRow = Range(“A1”).End(xlDown).Row
s = Range(“A” & LastRow).Formula
MsgBox s
End Sub