
教えて下さい。
環境:Visual Basic 2008
画面上にテキスト入力エリアを設け、日付を入力させたいと考えています。
その際に、あらかじめ"/"(スラッシュ)が表示されていて、そこへ数字のみを
入力し、例えば・・・20110101と入力された場合、2011/11/01と変換されて表示される
ような形にしたいと考えています。
そこで、以下のようなサンプルを入手し、実行していますが、どうもうまくFormatが
できません。
何が原因でしょうか???
Private Sub FRM_発注入力_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TXT_発注日.MaxLength = 10
End Sub
Function SetDateStyle(ByVal myStr As String) As String
Dim Temp As String
Temp = Replace(myStr, "/", "")
If Len(Temp) = 8 Then
SetDateStyle = Format$(Temp, "YY/MM/DD")
If IsDate(SetDateStyle) = False Then
Beep()
SetDateStyle = ""
End If
Else
SetDateStyle = myStr
End If
End Function
Private Sub TXT_発注日_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TXT_発注日.TextChanged
TXT_発注日.Text = SetDateStyle(TXT_発注日.Text)
End Sub
TXT_発注日というテキスト入力エリアに入力され、変更があった場合に処理をするような
形となっています。
初歩的な質問で申し訳ありませんが、教えて下さい。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>If Len(Temp) = 8 Then
>SetDateStyle = Format$(Temp, "YY/MM/DD")
Tempが8文字の時、日付形式に変換しているが
Tempはただの文字列なのでYYやMMは取得できないと思う。
SetDateStyle = Temp.Substring(0,2) & "/" & Temp.Substring(2,2) & "/" & Temp.Substring(4,2)
ならどうですか?(試してはいません)
No.2
- 回答日時:
日付を操作者から受け取る方法(設計)は
(1)年号+年月日の4ボックス用意
(2)年号なし(西暦)でん3ん月日の3ボックス
(3)年月日コミの1ボックス
(4)カレンダーコントロールをよういする
(5)年月日で各々コンボを用意する
などあるだろう。
本件は(3)らしいが、西暦か和暦(年号つき)か悩ましい。
それにテキストBだと文字列で入れるときスラッシュなど省く
式にすると、1月(1桁月)などで0つきに入力させる必要が出て、紛らわしい。
今件では、20110912のような入れ方を予定しているようだ(違う?)。
どうせ、近くにラベル等を設けて、そこでテキストに入れる内容の案内(指示)が必要だろう。
西暦和暦と年月日の区切りと表現方法(順序)の別など。
>あらかじめ"/"(スラッシュ)が表示されていて
初期値として??/??/??のスラッシュを表示したいようだが
スラッシュを入れないで入力させるなら、スラッシュは消えてしまって、、意味無いのではないか。
スラッシュをまたいで年月日をそれぞれ入力するのは面倒では。
質問の表現を詳しく書いておいてほしい。
--
質問の入力内容がよく理解できてない(例示説明など不十分)が、下記は参考になるだろう。
下記はテキストボックスに201203のように入れて、ボタンを押すと日付を表示するプログラム。
和暦にする部分は、見覚えるほか無いだろう。
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x, dts As String
Dim dt As DateTime
x = TextBox1.Text
dts = Microsoft.VisualBasic.Left(x, 4) & "/" & Mid(x, 5, 2) & "/" & Microsoft.VisualBasic.Right(x, 2)
MsgBox(dts)
dt = DateTime.Parse(dts)
MsgBox(dt.ToString("yyyy/MM/dd"))
'---
Dim cult As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ja-JP")
cult.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar
MsgBox(dt.ToString("ggyy年MM月dd日", cult))
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
C言語でつるかめ算をするにはど...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
C言語におけるfgetsを用いたル...
-
EDITコントロールで入力できる...
-
scanfが2回使えない・・・?;
-
scanfの入力をgets関数で読み捨...
-
C言語でgetchar();が上手く使え...
-
UWSCで変数をキー入力
-
C言語の標準関数についての質問...
-
batプログラム上で文字列を入力...
-
if文で困っています。
-
C++:cinが上手く使えない
-
入力値が1以下、かつ数字以外の...
-
入力する数字のサイズ制限について
-
ワードで文字を入力する時の変...
-
プログラミング初心者です。 Py...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
正負を反転させて出力するプロ...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
プログラミング初心者です。 Py...
-
C言語でgetchar();が上手く使え...
-
Excel VBAで、Application.Inpu...
-
電卓の小数点
-
cout関数を使っているのですが...
-
"scanf"でエンターで改行させな...
-
小数か整数かを判定する方法
-
至急教えてください!プログラ...
-
getchar()について 教えてくだ...
-
scanf が無視されます
-
batプログラム上で文字列を入力...
-
コマンドプロンプトからのEOFの...
-
IF文で戻ることはできますか?...
-
プログラミングの問題です 「金...
おすすめ情報