エクセル雑感
日付型と通貨型のValueとValue2について

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日: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で取得すれば桁落ちせずに取得できます。
ただしセルに入れられる有効桁数に制限はあります。
ということで、日付と通貨型は特殊なので注意が必要だというお話です。




同じテーマ「エクセル雑感」の記事

配列のUBoundがLBoundがより小さいことはあり得るか

ツイッターでVBAのお題として出したものです。配列の下限が上限より大きくなるような配列は存在するかの問題です。LBound(ary)>UBound(ary) この条件を満たすような配列は存在するか? 問題を出したツイート 配列の下限と上限を調べるにはLBound関数とUBound関数を使います。
ショートカット(Ctrl+Shift+n)抜け番ばどれだ
ツイッターで出したお題(投票)です。エクセルのショートカット、Ctrl+Shift+n 0~9の中で抜け番があるかどうか、抜け番があるなら何番かという問題です。問題を出したツイート エクセルの事も何か言っておかないと忘れられちゃうといけないので。
コレクションの要素を削除する場合
ツイッターで出したVBAのお題(投票)です。Collectionから要素を順に削除するVBAの正誤問題です。問題を出したツイート 【VBA問題】 DimcAsNewCollection Dimi Fori=1To100 c.Addi,CStr(i) Next Fori=1To100 c.Remove□ Next 四…
入力規則で○△を入れる数を制限する方法
ツイッターで出したエクセルの入力規則のお題です。入力規則で、○△を入れるとき、○△それぞれの入れられる数を制限する方法の問題です。問題を出したツイート 【エクセル問題】 添付のものを作成してください。
greeenはgreenに、greeeeeNをGReeeeNに変換
ツイッターで出したエクセルの入力規則のお題です。「greeenはgreenに、greeeeeNやGReeeeeenはGReeeeNに直す」文字列操作のVBA問題です。問題を出したツイート 【VBA問題】 greenは緑です。
数値変数の値を別の変数を使わずに入れ替える
ツイッターで出したエクセルVBAのお題です。数値が入っている3つの変数を、他の変数を使わずに値を入れ替えるという問題です。問題を出したツイート 【VBA問題】 変数a,b,cに整数値が入っています。これをa>b>cとなるように値を入れ替えてください。
Rangeオブジェクトを受け取り"行数,列数"で埋める
ツイッターで出したエクセルVBAのお題です。Rangeオブジェクトを受け取り、"行数,列数"の値(数式ではなく値)で埋めるVBAを書く問題です。問題を出したツイート 【VBAお題】 Rangeオブジェクトを受け取り、添付のように"行数,列数"の値(数式ではなく値)で埋めてくだ…
数式の関数の使用回数、関数名を配列で返す
ツイッターで出したエクセルVBAのお題です。セルに入っている計算式に使われている関数(ユーザー定義含む)を数えてみましょう、というお題になります。問題を出したツイート 【VBAお題】セルに計算式が入っています。
キーボード操作だけで非表示列を表示
ツイッターで出したエクセル基本操作のお題です。マウスを使わずにキーボード操作だけで非表示列を表示させる手順を示してください、というお題になります。問題を出したツイート 【エクセル基本操作問題】 A列とC列が非表示になっています。
日付型と通貨型のValueとValue2について
小文字"abc"を大文字"ABC"に変換する方法
ツイッターで出した「VBA問題」です。小文字"abc"を大文字"ABC"に変換する方法を可能な限り列挙してください。という問題です。。出題ツイート https://twitter.com/yamaoka_ss/status/1425799283303882758 「VBA問題…


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

還暦のVBA:VBAまでたどりつけるか… (2021-09-29)
VLOOKUPを使うことを基本としてシートを設計すべきか|エクセル雑感(2021-08-17)
コンピューターはブラックボックスで良い|エクセル雑感(2021-08-14)
小文字"abc"を大文字"ABC"に変換する方法|エクセル雑感(2021-08-13)
ADOでテキストデータを集計する|VBAサンプル集(2021-08-04)
VBA学習のお勧めコース|エクセル雑感(2021-08-01)
エクセル馬名ダービー|エクセル雑感(2021-07-21)
在庫を減らせ!毎日棚卸ししろ!|エクセル雑感(2021-07-05)
日付型と通貨型のValueとValue2について|エクセル雑感(2021-06-26)
DXってなんだ? ITと何が違うの?|エクセル雑感(2021-06-24)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.Excelショートカットキー一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.RangeとCellsの使い方|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.マクロって何?VBAって何?|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
9.セルに文字を入れるとは(Range,Value)|VBA入門
10.並べ替え(Sort)|VBA入門




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


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



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