昨夜、私はそれを理解する前に、良い10分、15分間に合わせるようなものに遭遇しました。しかし、私は理解していないなぜそれはこの方法です、だから私はここに誰かが解明することを望んでいます。 VBA IDEでのイミディエイトウィンドウから文字列からのフォーマットの出力
:
?Format(0.5, "HH:MM AM/PM")
12:00 PM
?Format("0.5", "HH:MM AM/PM")
12:05 AM
?Format(CDbl("0.5"), "HH:MM AM/PM")
12:00 PM
this pageから私は一時間は0.04166 ...((12 * (1/24) = 0.5)
)であるため、0.5は、12時00分PMに対応しなければならないことがわかります。そして、私が数字をFormat()
に渡しても、同じ数字を文字列として渡しても、あなたが見ることができます。
1分は0.00069444 ...((1/(24*60))
)です。つまり、12:05 AMは0.003472222((0 * (1/24)) + (5 * (1/(24*60)))
)としてExcelに保存する必要があります。そして、実際には:
?Format(0.003472222, "HH:MM AM/PM")
12:05 AM
私は理解していないいくつかのより多くの奇妙:私はドキュメントで見つけることができる
?Format(2.5, "HH:MM AM/PM")
12:00 PM
?Format("2.5", "HH:MM AM/PM")
02:05 AM
しかし...
?Format(2.523, "HH:MM AM/PM")
12:33 PM
?Format("2.523", "HH:MM AM/PM")
12:33 PM
すべてはタイムズ紙がある」と述べています実数の一部として格納されます。小数点の右側の値は時間を表します。たとえば、正午(12:00 PM)は0.5で表されます。 (Excel 2010に組み込まれているVBE用語集から) = (12 * (1/24)) + (33 * (1/(24*60)))
のため、小数点以下の部分は0.5
となり、2.523
の結果は12:33 PMになるため、2.5
の時刻は12:00 PMになります。しかし、VBAはそのうちの1つに対して正しい結果しか返しません。
だから誰も説明することができますなぜ VBAには一貫性のない動作があるようですか?それとも、シワがあるのですか?
これがExcel 2010で試験し、2013年
と明示的なタイプが重要であるとさせるVBAは、あなたのための暗黙の型変換を行う理由ですが、言語ので、多くの人々のためheadscratcherになります。いい投稿! –