#author("2023-05-07T20:00:26+09:00","","")
#navi(../)
* ExcelのValueとValue2の違いを試してみる [#y5916541]
結論を先に記すと、以下のリンクの記載の通りになります。~
- Microsoft: Range.Value2 プロパティ (Excel) ''注釈''~
https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.value2#remarks~
抜粋すると
''Value2 プロパティで Currency データ型と Date データ型が使用されない点です。''~
''倍精度浮動小数点型 (Double) を使用することにより、これらの 2 種類のデータ型の値を浮動小数点数として返すことができます。''
* 関連サイト [#zb5a7b57]
- Microsoft: Range.Value2 プロパティ (Excel)~
https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.value2
- Microsoft: Range.Value2 プロパティ (Excel) ''注釈''~
https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.value2#remarks
- Microsoft: Range.Value プロパティ (Excel)~
https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.value
* Range.Value と Range.Value2 を試してみる [#q79dbecc]
以下のシートと以下のVBAコードを作成し実行してみました。
** テスト用シートとVBAコード [#t835fb86]
-シート
#br
#ref(01.png)
#br
-VBAコード
Sub ValueAndValue2Test()
Worksheets("Sheet1").Activate
Dim valueResult As String
valueResult = _
Range("A2").Value & vbCrLf & _
Range("A3").Value & vbCrLf & _
Range("A4").Value & vbCrLf & _
Range("A5").Value & vbCrLf & _
Range("A6").Value & vbCrLf & _
Range("A7").Value & vbCrLf
Dim value2Result As String
value2Result = _
Range("A2").Value2 & vbCrLf & _
Range("A3").Value2 & vbCrLf & _
Range("A4").Value2 & vbCrLf & _
Range("A5").Value2 & vbCrLf & _
Range("A6").Value2 & vbCrLf & _
Range("A7").Value2 & vbCrLf
MsgBox ( _
"Range.Value" & vbCrLf & valueResult & vbCrLf & _
"Range.Value2" & vbCrLf & value2Result)
End Sub
** 実行結果 [#oaf4d2bf]
以下のようにValue2の場合、日付(Date)が値になって返却されているのが確認できます。~
通貨に関しては、数値ですのでそのまま数値で表示されていますが、Value2の注釈の通り、~
日付(Date)と通貨(Currency)は倍精度浮動小数点型 (Double)として返却されているのでしょう。
#ref(02.png)
以上、Range の Value と Value2 を試してみた記事となります。
#htmlinsert(office_ads_btm.html)