Page 773 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼テキストボックスに生年月日を入力する方法 ゆみゆみ 03/2/18(火) 23:35 ┗Re:テキストボックスに生年月日を入力する方法 Jaka 03/2/19(水) 11:36 ┗Re:テキストボックスの表示形式 ゆみゆみ 03/2/19(水) 14:01 ┗う〜ん。 Jaka 03/2/19(水) 15:25 ┗Re:お手間かけました ゆみゆみ 03/2/19(水) 16:07 ┗Re:お手間かけました ポンタ 03/2/20(木) 9:20 ─────────────────────────────────────── ■題名 : テキストボックスに生年月日を入力する方法 ■名前 : ゆみゆみ ■日付 : 03/2/18(火) 23:35 -------------------------------------------------------------------------
こんばんわ、はじめてこちらにおじゃまします。 最近VBAに興味を持ち、挑戦しているところです。 今ユーザーフォームに挑戦しています。 御指導願います。 テキストボックスに生年月日を和暦で入力して、ワークシートに 表示させたいのですが・・・ 和暦入力の方法がわからずにつまづいてしまいました。 例えば、1つのテキストボックス内をあらかじめ __/__/__ というように2桁ずつ区切っておき、生年月日を”500927”入力すると テキストボックス内は 50/09/27と表示され、 シートには昭和50年9月27日と表示させるといった具合です。 このようなことは可能でしょうか? また、年号は別のボックスで指定が必要なのでしょうか? 質問の方法も要領を得ず、わかりづらいかとも思いますが、 アドバイスよろしくお願い致します。 |
こんにちは。 年号の判定はしていませんので、昭和75年なんて事にもなっちゃいますが。 単純に分解して、文字をつなげただけです。 セルに入れても日付として扱われません。 Private Sub CommandButton1_Click() wd = Application.WorksheetFunction.Substitute(TextBox1.Value, "/", "") Range("A1").Value = "昭和" & Int(Left(wd, 2)) & "年" & Int(Mid(wd, 3, 2)) & _ "月" & Int(Right(wd, 2)) & "日" End Sub Private Sub TextBox1_Change() If Len(TextBox1.Value) = 6 And Right(TextBox1, 1) <> "/" Then wd = TextBox1.Value TextBox1.Value = Left(wd, 2) & "/" & Mid(wd, 3, 2) & "/" & Right(wd, 2) End If End Sub Private Sub UserForm_Initialize() TextBox1.SetFocus End Sub |
申し訳ありません、私の質問の仕方が間違っていました。 せっかくアドバイスをいただいたのに・・・すみません。 ユーザーフォームを使ってお客様の情報を入力し、コマンドボタンを 押すことでシートに記載するといった流れです。 ユーザーフォーム上で 生年月日(和暦)を入力すると、隣にある年齢テキストボックスに満年齢が出るように したいと思っています。 例えば、昭和50年5月1日生まれであれば、 50/05/01と入力→昭和50年5月1日(とテキストボックスに表示される) (スラッシュなしで打ち込む方法もありますでしょうか?) また、テキストボックスと同じ表示形式でシート(セル)にも表示したいのですが うまくいきません。 本では、西暦表示のものばかりで。。。 とても初歩的なことだとは思いますが、行き詰まってしまいました。 どうぞ宜しくお願いいたします。 |
日付と時間関係はほとんど無知です。 和暦と西暦の変換を使うと思うんですけど...。 もう少し考えてみます。 その前に、角田さんとおっしゃる方が回答してくれると思います。 参考までに http://www.h3.dion.ne.jp/~sakatsu/index.htm |
Jaka さん たいへんお手間をおかけしてすみませんでした。 入力自体に手間をかけないようにと思い、安易にユーザーフォームに 飛びついてしまったのですが、自分の知識と能力がまったく追いついていない 状態です(苦笑) 本当に難しいですね・・・ リンク先を参考にしてみます。 いろいろとありがとうございました。 また何かありましたらお願いします。 |
遅レスですが、 テキストボックスではなく、コンボボックスから選択するように してみてはいかがですか? 以下の手順でやってみてください。 まず、「Sheet1」のA1〜A64に 昭和1年〜昭和64年 A65〜A79に 平成1年〜平成15年 B1〜B12に 1月〜12月 C1〜C31に 1日〜31日と入力しておきます。 UserFormにComboBox1、ComboBox2、ComboBox3とTextBox1を作成し、 ComboBox1のRowSourceプロパティを「Sheet1!A1:A79」 ComboBox2のRowSourceプロパティを「Sheet1!B1:B12」 ComboBox3のRowSourceプロパティを「Sheet1!C1:C31」に設定します。 最後に、以下のコードをフォームモジュールに貼り付けてください。 Private Sub ComboBox1_Change() Call 満年齢 End Sub Private Sub ComboBox2_Change() Call 満年齢 End Sub Private Sub ComboBox3_Change() Call 満年齢 End Sub Private Sub 満年齢() If ComboBox1.ListIndex <> -1 And ComboBox2.ListIndex <> -1 And ComboBox3.ListIndex <> -1 Then TextBox1.Value = Int(DateDiff("d", ComboBox1.Value & ComboBox2.Value & ComboBox3.Value, Date) / 365.25) End If End Sub 年、月、日すべてが選択されると、満年齢が表示されます。 PS1.シート名は適当に変更してください。 PS2.DateDiffの使い方がいまいち分かってないので 閏年の計算で間違えるかもしれません。 |