ツイッター出題回答
日付型と通貨型の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 ・・・新着記事一覧を見る

無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)
イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)
PIVOTBY関数(縦軸と横軸でグループ化して集計)|エクセル入門(2023-11-19)


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

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




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


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



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