![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
UserFormにTextBoxがTextBox1からTextBox10の10個あり、すべて日付を入力します。
たとえば「12/10」と入力し、EnterもしくはTabキーなどで他のTextBoxにカーソルを移動させると
「2008/12/15」と前に年を表示させたいと思っています。
もし、日付ではないものを入力された場合は、エラーメッセージを表示したいと思っています。
日付入力はTextBox1から順に入力していくのですが、いつも10個すべてのTextBoxが入力される
わけではありません。(TextBox1~TextBox3のみ入力などがあります。)
どのようにしたら日付データ「12/10」と入力したら自動的に「2008/12/10」と年を追加させる
ことができ、日付データではない場合はエラー表示することができるのでしょうか。
(「2008/12/10」と入力された場合は、そのまま表示)
ご教授のほど、よろしくお願いします。
No.4ベストアンサー
- 回答日時:
こんな感じでいいんじゃないかな
#2さんのと被ってるけど^^;
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim tmp As String
Cancel = validateDateString(Me.TextBox1.Text, tmp)
Me.TextBox1.Text = tmp
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim tmp As String
Cancel = validateDateString(Me.TextBox2.Text, tmp)
Me.TextBox2.Text = tmp
End Sub
Private Function validateDateString(dateString As String, ByRef resultString As String) As Boolean
validateDateString = False
dateString = Trim(dateString)
If Len(dateString) = 0 Then
resultString = vbNullString
ElseIf IsDate(dateString) Then
resultString = Format(CDate(dateString), "yyyy/mm/dd")
Else
MsgBox "日付を入力してください", vbExclamation
resultString = dateString
validateDateString = True
End If
End Function
No.3
- 回答日時:
日付チェックを始めるきっかけは、何を使うか、はっきり認識すべきです。
(1)入力完了済みの意志のコマンドボタンのクリック
(2)テキストボックスのイベント
など
ーー
12/10を2808/12/10と解するのはたやすいが、実際には危険を伴う。2009年になったらどうする。
・操作時の年
・毎年初プログラムを手直し
なども有ると思うが、やはり年は1箇所か、全テキストボックスに入れるべきではないかな。10個とも日付年がそろうものかな。
ーー
日付として、日付シリアル値数的・カレンダー的に有効かどうかはIsDate関数が有る
Sub test01()
If IsDate(Cells(1, "A")) = True Then
MsgBox "日付OK"
Else
MsgBox "日付NO"
End If
End Sub
0,13月、33日などチェックしてくれる。
ーーー
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
t = "2008/" & UserForm1.TextBox1.Text
If IsDate(t) = True Then
MsgBox "日付1 OK"
Else
MsgBox "日付1 NO"
End If
End Sub
ーーーーー
これは1つのテキストボックス対応だけだが、VBAでは、とりあえずは各テキストに対応した10個似たものを並べてください。
将来1つのルーチンで済ます方法を勉強してください。
No.2
- 回答日時:
日付かどうかをチェックし、日付なら編集後の文字列を返し、
日付として不正ならエラーメッセージを表示して、空文字列を
返す関数の例
Function 日付検査(ByVal 文字列 As String) As String
If Trim(文字列) = "" Then Exit Function '空文字列は許可
If IsDate(文字列) Then
日付検査 = Format(CDate(文字列), "YYYY/MM/DD")
Else
MsgBox "日付として不正です", vbCritical, "日付エラー"
End If
End Function
No.1
- 回答日時:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim a As Date
If TextBox1.Text = "" Then Exit Sub
On Error GoTo ErrorHandler
a = TextBox1.Text
If a < #1/1/2000# Then GoTo ErrorHandler
TextBox1.Text = a
Exit Sub
ErrorHandler:
TextBox1.Text = ""
MsgBox "error"
Cancel = True
End Sub
完全ではないので、参考までに
特に日付関係はムズイ
もっと条件を絞らないとエラーの回避は出来ないと思う
月と日を分けて別々のtextboxに入力させた方がエラー対処がしやすいと思う
他の入力方法としてカレンダコントロールを使用するのが良いかも
マウスで入力できるし、エラー処理も殆んどしなくてよいと思うよ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- その他(プログラミング・Web制作) Pythonについての質問です。 初心者ほやほやなのでお手柔らかにお願いします。 今手引きにそって入 2 2022/09/22 21:56
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Excel(エクセル) Excel2019、2021の売り上げなどの集計表について 4 2022/11/29 14:03
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGridViewでyyyy/MM/dd
-
エクセルのVBAで日付を検索し転...
-
VisualBasic6.0のFormat関数で...
-
ユーザーフォームのラベルに日...
-
「eclipseで作るカレンダー(ス...
-
一応言語はC#です。
-
今日より前の書き方 マクロ
-
3人のじゃんけんのプログラム
-
【Excel VBA】条件に合った行の...
-
VBA 日付、未来の日付はエラー...
-
MonthView 日付取得方法
-
【VBA】土日をスキップして日付...
-
Googleフォームで選択肢に応じ...
-
VB6.0 のformat関数について
-
g08のロック画面の日付
-
ACCESSのフォームに本日...
-
システム日付とは?
-
Eclipseの対応する括弧の強調表...
-
VBAで日付入力しているのですが
-
日付の差を求めるには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームのラベルに日...
-
エクセルのVBAで日付を検索し転...
-
Eclipseの対応する括弧の強調表...
-
DataGridViewでyyyy/MM/dd
-
VisualBasic6.0のFormat関数で...
-
JSPからYYYYMMDDで日付入力する
-
今日より前の書き方 マクロ
-
3人のじゃんけんのプログラム
-
システム日付とは?
-
【Excel VBA】条件に合った行の...
-
VBA 日付、未来の日付はエラー...
-
【VBA】土日をスキップして日付...
-
VBAで当月の1日を表示するには...
-
「eclipseで作るカレンダー(ス...
-
VBAの質問になります 行の非表示
-
VB 日付範囲チェック
-
コンボボックスに日付を表示する
-
テキストボックスにカレンダー...
-
指定した日付が、その月の第何...
-
VB6.0 のformat関数について
おすすめ情報