Excel VBAではRange("A1").Value
、ワークシートの範囲A1の基になる値を返す必要があります。しかし、セルがアカウンティングとしてフォーマットされている場合、私は異なる値を取得しています。
セルの実際の基礎となる値を取得するにはどうすればよいですか?
ワークシート
新しいドキュメントを作成し、セルに次の値を入力します。
- A1:0.00001
- A2:= A1
- A3:= A1 = A2
ご想像のとおり、A3の結果はTRUE
。次に、小数点以下2桁を使用して、A2のフォーマットをアカウンティングに変更します。A2は現在、を読み取ります$ 0.00
が、基になる値はまだ0.00001
であるため、A3はまだTRUE
です。
VBA
新しいモジュールを作成し、次の関数を追加します。
Function f(addr As String)
f = Range(addr).Value
End Function
ご覧のとおり、これはオブジェクトのValue
メソッドを使用して範囲の値を取得するだけです。Range
ワークシート
ワークシートに戻ります。次の値を入力します。
- B1:= f( "A1")
- B2:= f( "A2")
- B3:= B1 = B2
A1
とA2
は同じ基本値を持ちますが、との方法を使用して計算されたとしても、そうではB1
ありB2
ません。Value
A1
A2
A3
( )の式は=A1=A2
、との実際の基になる値にアクセスしていA1
ますA2
。VBAでこれらの値にアクセスするにはどうすればよいですか?