ツイッター出題回答
日付型と通貨型のValueとValue2について

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2021-06-26 最終更新日:2021-06-26

日付型と通貨型のValueとValue2について


ツイッターでVBAに関する問題を出しました。
問題としてはValueとValue2について問うもので、日付型と通貨型が問題の焦点になります。


マクロ VBA Value2 日付型 通貨型
https://twitter.com/yamaoka_ss/status/1408259798357794817


VBA問題の出題ツイート

【VBA問題】
Rangeに対して、
.Value = .Value
.Value2 = .Value2
これらを実行すると数式が消えて値だけになります。
ところで、これらの実行でセル値が変わってしまう事があるでしょうか。
※セル値が変わるというのは、見た目の値が変化(桁落ち等)するかということ。


VBA問題の解答ツイート

出題文が良くなかったです。
文字列になっている他のデータ型へ変換可能なものは変わってしまいます。
Value2の仕様を考えてもらおうという主旨の問題でした。
ここに書かれている通り、問題は CurrencyとDate です。
VBAでは、
Dateは実質Doubleです。
CurrencyはCurrencyです。
Currencyは4桁の固定小数点です。
VBAでValueを取得した時、セルの表示形式が影響します。
日付型ならDate
通貨型ならCurrency
でも、Currencyは小数4桁までです。
マクロ VBA Value2 日付型 通貨型


したがって、通貨型の表示形式に小数5桁以上を入れている場合は桁落ちします。
これはセルに再出力する前の段階、VBAで取得した時点で発生しています。
ただし、実務として通貨型に小数5桁以上を入れることは無いはずです(と思うけど)
したがって、実質的な被害が起こることは無いだろうと思います。


日付および通過型の仕様を考慮して、Doubleで取得したい場合に使うのがValue2という事です。
したがって通貨型のセルもValue2で取得すれば桁落ちせずに取得できます。
ただしセルに入れられる有効桁数に制限はあります。
ということで、日付と通貨型は特殊なので注意が必要だというお話です。




同じテーマ「ツイッター出題回答 」の記事

数値変数の値を別の変数を使わずに入れ替える
Rangeオブジェクトを受け取り"行数,列数"で埋める
数式の関数の使用回数、関数名を配列で返す
日付型と通貨型のValueとValue2について
小文字"abc"を大文字"ABC"に変換する方法
オブジェクトのByRef、ByVal、Variant
「マクロの登録」で登録できないプロシージャーは?
ジャグ配列から順列を作成する
シート内の全テーブルを1つに統合
VBA穴埋め問題「On Error GoToの挙動」
数珠順列(配置に条件付き)を全て出力する


新着記事NEW ・・・新着記事一覧を見る

イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)
PIVOTBY関数(縦軸と横軸でグループ化して集計)|エクセル入門(2023-11-19)
GROUPBY関数(縦軸でグループ化して集計)|エクセル入門(2023-11-18)
PY関数(Pythonコードをセル内で実行)|エクセル入門(2023-11-17)
画像「セルに配置」のVBAについて(365の新機能)|VBA技術解説(2023-11-13)
スピルのゴーストの範囲を選択するVBA|ツイッター出題回答 (2023-10-31)
エクセル試験3:月間の所定労働時間|エクセル練習問題(2023-10-04)
エクセル試験2:所得税の計算|エクセル練習問題(2023-10-04)
エクセル試験1:曜日別の平均客単価|エクセル練習問題(2023-10-04)
列全体を指定する時のRangeとColumnsの違い|ツイッター出題回答 (2023-09-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.条件分岐(IF)|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.Range以外の指定方法(Cells,Rows,Columns)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ