教えて下さい。
環境: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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
DateTimePickerでに年月までしか選択できないようにしたいです。
Visual Basic(VBA)
-
VB.netでメソッドからコントロールを取得
Visual Basic(VBA)
-
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
-
4
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
5
副問合せの書き方について
SQL Server
-
6
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
7
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
8
正整数の半角数字かどうか判定する
Visual Basic(VBA)
-
9
テキストボックスに今日の日付を入力
Microsoft ASP
-
10
VB.net 重複チェックがしたいです
Visual Basic(VBA)
-
11
【VB.NET】日付型の列にNULLを登録する方法について
SQL Server
-
12
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング初心者です。 Py...
-
プログラム(C)
-
*をユーザーが入力した数字の数...
-
プログラミング・C言語の配列(...
-
コマンドプロンプトからのEOFの...
-
正負を反転させて出力するプロ...
-
作成したいプルグラムがあります。
-
VBでの日付入力値のフォーマッ...
-
cout関数を使っているのですが...
-
c言語が初心者です。教えていた...
-
C言語でつるかめ算をするにはど...
-
batプログラム上で文字列を入力...
-
C言語の入出力関数の違い
-
エクセルワークシート上で、1、...
-
VisualStudio2019のコードアナ...
-
数値の連続入力終了条件について
-
入力されたとき,何も入力しな...
-
double型が正常に認識されてい...
-
アセンブラ言語CASLIIのプ...
-
C言語 自然数の四則演算 エラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語 逆ピラミッドの作り方
-
double型が正常に認識されてい...
-
ワードで文字を入力する時の変...
-
コマンドプロンプトからのEOFの...
-
Linuxで入力待ちなしkeyread関...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
cout関数を使っているのですが...
-
enterでループ終了
-
"scanf"でエンターで改行させな...
-
C言語でgetchar();が上手く使え...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報