システムwiki

セル内の日付フォーマット(DD/MM/YYYY)が必要

Spinaz1 解決済 最終更新日:2021-05-02 02:36

HI、

私は日付が入力される形式です.問題は、誰かが完全な日付を入力しない場合(すなわち、2017年1月1日の1/1/20が入力されています)、Excelは日付に入力されたものを変換します.データ検証は、日付を必要とするために適用されます.
範囲ですが、Excelは依然として入力されているものへの変換を(2桁の範囲dd/mm/yy内にある限り).セル値に4桁の年(DD/MM/YYYY)を持つ日付形式を強制的に持ち込むことができます.

成功しない次のコードを試してみました

プライベートサブワークシート(範囲としてのBYVALターゲット)
set x= activeSheet.range( "b8:b10")
X
の各Cについて C.Value<>""とc.numberformat<>"dd/mm/yyyy"の場合
C.CleletContents
MsgBox "このセルでは今日の日付と1/1/2050の間の日付だけが許可されています.

の場合は終了 次のc
END SUB

SCOTT

返信リスト(回答:5)

1 #
BernieD

日付を取得するには、制御された入力を使用することをお勧めします.これは、コードの使用方法の例とともに、それを実行するVBAユーザーフォームを含むワークブックです.

応答1# ->にスキップ
2 #
Spinaz1

感謝していますが、Control InputはどのようにしてDD/MM/YYYYに制限していますか?

スコット

応答2# ->にスキップ
3 #
BernieD

セルに日付を入力する場合、セルのフォーマットによって日付の表示が制御されます.(日付は、1900年1月1日からの日数であり、特別な書式が設定されています.)したがって、NumberFormatを使用して行を変更します

rngAC.NumberFormat="mmmm d、yyyy"

から

rngAC.NumberFormat="dd/mm/yyyy"

テキストボックスに日付を表示している場合は、次の行を見つけます.

Me.TextBox1.Text=g_sDate

そしてそれを

に変更します

Me.TextBox1.Text=Format(g_sDate、 "dd/mm/yyyy")

もちろん、使用するオブジェクトは(おそらく)Me.TextBox1ではありません

応答3# ->にスキップ
4 #
Spinaz1

もう一度Bernieを感謝しますが、私は入力された日付をフォーマットしたくありません.しかし、むしろ、入力された日付が特定のフォーマットで入力され、その日と月の2桁、そしてその年の4つの桁数が必要です.言い換えれば、ユーザーが1/1/21に入った場合、それ
DD/MM/YYYY形式の日付を入力するように信号を送ります.2021年01月01日に日付を修正したら、それを受け入れます.

これは可能ですか?

応答4# ->にスキップ
5 #
BernieD 1

必須ではありません.Excelの日付は実際には単なる数値であり、1900年1月1日からの日数です.表示の書式設定は、基になる数値を変更せず、セル内での外観を変更します.数式バーでは、取得される表示を制御できません
Windowsの日付設定から.

つまり、ユーザーが1/1または1/1/17または1/1/2017または1-1または1-1-17などと入力した場合. 次に、Excelはそのセルに42736を入力します-または2017年1月1日.数式バーにデフォルトのWindows形式が表示され、セルにフォーマットされた日付文字列が表示されます
そのセルに選択したもの.

日付に文字列を使用することはお勧めできませんが、文字列での日付の使用方法を制御する必要がある場合は、次のような数式を使用する必要があります

= "これは入力された日付です:"&TEXT(A2、 "dd/mm/yyyy")

セルA2にその日付がある場所.

VBAでは、次のように実行されます

Msgbox "これは入力された日付です:"&Format(Range( "A2").Value、 "dd/mm/yyyy")

Msgbox "これは入力された日付です:"&Range( "A2").Text 'セルA2のフォーマットされた表示を返します