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ません。ValueA1A2
A3( )の式は=A1=A2、との実際の基になる値にアクセスしていA1ますA2。VBAでこれらの値にアクセスするにはどうすればよいですか?