Categories: VBA

VBAでセルの値を取得する│値・シリアル値・数式(計算式)を取得する方法

この記事では、VBAを使ってセルに入力されている文字数値シリアル値数式(計算式)取得する方法を実際のVBAコードも含めて説明します。

セルからの値取得は、VBAを活用した自動化の基本的な動作です。例えば、セルに入力されている値の状態(大小)によって処理を分岐させる場合にも使います。

文字数値シリアル値数式(計算式)、それぞれをセルから取得するためのVBAコードを紹介しますので、ご参考になれば幸いです。

※シリアル値については後述します。

VBA│文字を取得する

この章では、ExcelのセルA1に入力されている「VBAを覚えよう!」という文字列を取得するVBAコードを紹介します。文字列は変数「s」に取得し、正確に取得していることを確認するため、最後にメッセージボックスで表示する処理も加えています。

基本構文

object . Value

  • object = 入力対象のセル位置
    この例では、A1です
  • Value = 文字を取得する定型文
    (Valueは値を代入するプロパティです)

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」に変えるだけです。

実は、変数の型は「String型」でも数値は取得できます。自動的に型変換が行われますので、「String型」で取得した値も「Long型」同様に計算に使うこともできます。ただし、VBAコード上では変数の型を明確に指定したほうがわかり易いでしょう。

基本構文

object . Value

  • object = 入力対象のセル位置
    この例では、A1です
  • Value = 文字を取得する定型文
    (Valueは値を代入するプロパティです)

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型」で取得します。

「String型」で取得した場合でも自動的に型変換が行われますので、計算で使うこともできます。

基本構文

object . Value2

  • object = 入力対象のセル位置
    この例では、A1です
  • Value2 = シリアル値を取得する定型文
    (Valueは値を代入するプロパティです)

Value2省略できません。

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

まず、対象の列からデータの最終行を取得し変数 LastRow に代入しています。次に、変数 LastRow と文字「A」を組み合わせて最後のセルを指定しています。(この例では、A3となります)

Webs

元事務処理担当者として、プログラミングを活用した業務改善を推進している。プログラマ出身ではない事務職の現場目線で情報を発信。 その他、webs-studio.jpをメインに、複数のブログサイトを立ち上げており、合計で月間10万PVのメディア運営を行っている。 姉妹サイト一覧