これが最もクリーンな方法です。文字列の連結は必要ありません。
Dim d As Date
d = CDate(myDate.Value) + TimeSerial(txtHour.Value, txtMinute.Value, 0)
Range("A1") = d
Range("A1").NumberFormat = "mm/dd/yyyy hh:mm"
' If you *really* need the date as a string (which is rarely the case):
Dim s As String
s = Format(d, "mm/dd/yyyy hh:mm")
唯一の弱点はCDate(myDate.Value)
。VBA ドキュメントから:
CDateは、システムのロケール設定に従って日付形式を認識します。認識されている日付設定以外の形式で提供された場合、日、月、年の正しい順序が決定されない場合があります。
たとえば、日付をdd/mm/yyyy
ではなく formatで入力mm/dd/yyyy
するmyDate
と、正しく機能しません。Zaider のソリューションにも同様の弱点があることに注意してください。