セルの内容を調べるExcelVBAコード
一口にセルの内容と言ってもいくつか考えられます。「値」だったり「テキスト」だったり「数式」だったり、また書式によっても内容はいろいろ変わりますよね。ここではいくつかの例を挙げてそれぞれの「セルの内容」を確認します。
コード
Sub ShowCellData() Dim StrCellAddress, StrFmt, StrVal, StrVal2, StrTxt, StrFml With ActiveCell StrCellAddress = "セル : " & .Address StrFmt = "書式 : " & .DisplayFormat.NumberFormatLocal StrTxt = "Text : " & .Text StrVal = "Value : " & .Value StrVal2 = "Value2 : " & .Value2 StrFml = "Fomula: " & .Formula End With MsgBox StrCellAddress & vbCrLf & StrFmt & vbCrLf & _ StrTxt & vbCrLf & StrVal & vbCrLf & _ StrVal2 & vbCrLf & StrFml End Sub
Rangeオブジェクトのプロパティ | 内容 |
---|---|
.Text | テキスト |
.Value | 値 |
.Value2 | 値2 |
.Formula | 数式 |
数値(1)
C4セルに「123」と数値を入力しました。数式バーも「123」になっています。書式は標準でこれは数値です。この場合はどのプロパティでも「123」になります。
D4セルに「=C4*2」と数式を入力しました。計算されてセルは「246」と表示されています。数式バーは「=C4*2」です。書式は標準でこれは数値です。数式以外のプロパティは「246」になります。
数値(2):分数
C8セルに「0.5」と数値を入力しました。数式バーも「0.5」になっています。書式は標準でこれは数値です。この場合はどのプロパティでも「0.5」になります。
D8セルに「=C8」と数式を入力し、書式を「# ?/?」(分数)に設定しました。書式に従ってセルには「1/2」と表示されています。数式バーは「=C8」です。このとき値としては「0.5」、テキストは「1/2」となります。
文字列
C5セルに「ABC」と文字列を入力しました。数式バーも「ABC」になっています。書式は標準でこれは文字列です。この場合はどのプロパティでも「ABC」になります。
D5セルに「=LEFTB(C5,2)」と数式を入力しました。数式に従いセルは「AB」と表示されています。数式バーは「=LEFTB(C5,2)」です。書式は標準でこれは文字列です。数式以外のプロパティは「AB」となります。
通貨/会計
C6セルに「1234567」と数値を入力しました。数式バーも「1234567」になっています。書式は標準でこれは数値です。この場合はどのプロパティでも「1234567」になります。
D6セルに「=C6」と数式を入力し、書式を「通貨(¥)」に設定しました。書式に従ってセルには「¥1,234,567」と表示されています。数式バーは「=C6」です。このとき値としては「1234567」、テキストは「¥1,234,567」となります。
日付/時刻
C7セルに「2017/9/1」と日付を入力しました。書式は自動的に「yyyy/m/d」になりました。数式バーは「2017/9/1」です。値(Value)は「2017/09/01」になっています。また、値2(Value2)はシリアル値の「42979」になっています。数式もシリアル値になっています。
C7セルを一度クリアして「H29/9/1」と日付を入力しました。書式は自動的に「[$-411]ge.m.d」になりました。数式バーは「2017/9/1」です。値(Value)は「2017/09/01」になっています。また、値2(Value2)はシリアル値の「42979」になっています。数式もシリアル値になっています。
D7セルに「=C7」と数式を入力し、書式を和暦の日付に設定しました。数式バーは「=C7」です。値(Value)は「2017/09/01」になっています。また、値2(Value2)はシリアル値の「42979」になっています。
まとめ
まとめると以下のようになります。
日付/時刻以外の場合
プロパティ | 内容 |
---|---|
Textプロパティ | セルに表示されているもの |
Valueプロパティ | 入力値または数式の結果で書式が標準のもの |
Value2プロパティ | Valueと同値 |
Formulaプロパティ | 数式が入力されていれば数式 それ以外は入力値で書式が標準のもの |