エクセルで1月1日入力すると今年の1月1日になるから
都度2015/~ってキー打つのめんどくさい~
5文字多い~
で、調べたらオートコレクトに”..”を登録して”2015/”って出るようにするのがあった。
早速使ってみたけど、TextBoxやUserForm上では効いてくれないらしい。
そのまま”..1/5”なんてなってしまう。
仕方ないのでオートコレクトをヒントにVBAで毎年変更せずオートコレクトと同じように使えるようにしました。
TextBoxに”..1/5”と入れるとセルに”2015/1/5”と表示されるVBAで、
”..”入れないで”1/5”だと”2014/1/5”ちゃんとになります。
オートコレクト毎年変えなくてもいいから楽ちんですね~
シート(1)にTextBox1を配置し、D1に結果を表示します。
Private Sub TextBox1_Change()
If Left(TextBox1.Value, 2) = ".." Then
TextBox1.Value = Replace(TextBox1.Value, "..", Format(DateAdd("yyyy", 1, Date), "yyyy") & "/")
Sheets("1").Range("D1").Value = TextBox1.Value
Else
Sheets("1").Range("D1").Value = TextBox1.Value
End If
End Sub
日本語で書くとこう
TextBox1が変わったらやることだよ
もし、TextBox1の値の左から2つ目までが「..」だったら、
TextBox1の値は、TextBox1の値の「..」を今日の日付の年に1を足して、年だけの4桁に変えて最後に「/」を加えるよ
シート1のセルD1の値は、このTextBox1の値と一緒にするよ
「..」がなかったら
そのまんまシートD1の値は、このTextBox1の値と一緒にするよ
もしもの話はこれでおしまい
あたまんなかでこんな風に書いてます・・・
追記
こっちのほうが楽かも?
If CDate(TextBox1.Value) < (Date - 240) Then
Sheets("1").Range("D1").Value = DateAdd("yyyy", 1, TextBox1.Value)
'CDateで文字列を日付に変換したものが8ヶ月より前だったら
'D1の値をTB1の年の位に1足したものにする