Excel VBA 質問スレッド №1963 (解決済)

カレンダーを使用してテキストボックスへの入力について

投稿者 : スズキ     投稿日時 : 2024/07/11(Thu) 15:13:37     OS : Windows 11     EXCEL : Office 365
はじめまして
現在使用しているカレンダーを使用しての入力なのですが
テキストボックス名を変更したら使えなくなってしまいました。

その他データと連動のためTextbox1 Textbox2での使用が不可となります。

どのように変更したら良いのか教えていただけますでしょうか

よろしくお願いいたします。


□□□□□ Textbox
▼ CommandButton
---------------------------
これからはこちらのテキストボックス名に変更したい。
□□□□□▼   
Textbox名 Syukkobi
CommandButton名 CommandButton1

□□□□□▼
Textbox名 Nonyubi
CommandButton名 CommandButton2

----------------------------
今までは Textbox1 Textbox2 で使用していました。

Private Sub CommandButton1_Click()
  Call ShowCalender(1)
End Sub
----------------------------
Private Sub CommandButton2_Click()
  Call ShowCalender(2)
End Sub
----------------------------
Private Sub ShowCalender(i As Integer)
  clndr_flg = False 'フラグリセット
  If IsDate(Me("TextBox" & i).Value) = False Then '日付が入ってなければ
    clndr_date = Date '今日の日付を格納
  Else
    clndr_date = Me("TextBox" & i).Value 'テキストボックスの日付を格納
  End If
  CalenderForm.Show 'カレンダーを開く
  If clndr_flg = True Then Me("TextBox" & i).Value = Format(clndr_date, "m月d日(aaa)") 'クリックされた日付を上書き yyyy/mm/dd
End Sub

----------------------------
モジュール
'---カレンダー用変数
Public clndr_date As Date 'テキストボックスの値を格納する変数
Public clndr_flg As Boolean 'カレンダーがクリックされたか判定するフラグ

スポンサーリンク
[返信 1] Re : カレンダーを使用してテキストボックスへの入力について
投稿者 : hatena     投稿日時 : 2024/07/11(Thu) 16:08:24
ShowCalenderの引数をTextbox名にすればいいでしょう。


Private Sub CommandButton1_Click()
  Call ShowCalender("Syukkobi")
End Sub


Private Sub CommandButton2_Click()
  Call ShowCalender("Nonyubi")
End Sub


Private Sub ShowCalender(TxtBoxName As String)
  clndr_flg = False 'フラグリセット
  If IsDate(Me(TxtBoxName).Value) = False Then '日付が入ってなければ
    clndr_date = Date '今日の日付を格納
  Else
    clndr_date = Me(TxtBoxName).Value 'テキストボックスの日付を格納
  End If
  CalenderForm.Show 'カレンダーを開く
  If clndr_flg = True Then Me(TxtBoxName).Value = Format(clndr_date, "m月d日(aaa)") 'クリックされた日付を上書き yyyy/mm/dd
End Sub

あるいはテキストボックスオブジェクトを渡してもいいでしょう。

Private Sub CommandButton1_Click()
  Call ShowCalender(Me.Syukkobi)
End Sub


Private Sub CommandButton2_Click()
  Call ShowCalender(Me.Nonyubi)
End Sub


Private Sub ShowCalender(TxtBox As Control)
  clndr_flg = False 'フラグリセット
  If IsDate(TxtBox.Value) = False Then '日付が入ってなければ
    clndr_date = Date '今日の日付を格納
  Else
    clndr_date = TxtBox.Value 'テキストボックスの日付を格納
  End If
  CalenderForm.Show 'カレンダーを開く
  If clndr_flg = True Then TxtBox.Value = Format(clndr_date, "m月d日(aaa)") 'クリックされた日付を上書き yyyy/mm/dd
End Sub

[返信 2] Re : カレンダーを使用してテキストボックスへの入力について
投稿者 : スズキ     投稿日時 : 2024/07/12(Fri) 09:09:43
hatena様

ご返信ありがとうございます。

早速使用させていただきました!

色々な方法がありとても勉強になりました。

この度は教えていただきありがとうございました。

スズキ


■[返信 1] hatenaさん(2024-07-11 16:08:24)の記事
> ShowCalenderの引数をTextbox名にすればいいでしょう。


> Private Sub CommandButton1_Click()
> Call ShowCalender("Syukkobi")
> End Sub


> Private Sub CommandButton2_Click()
> Call ShowCalender("Nonyubi")
> End Sub


> Private Sub ShowCalender(TxtBoxName As String)
> clndr_flg = False 'フラグリセット
> If IsDate(Me(TxtBoxName).Value) = False Then '日付が入ってなければ
> clndr_date = Date '今日の日付を格納
> Else
> clndr_date = Me(TxtBoxName).Value 'テキストボックスの日付を格納
> End If
> CalenderForm.Show 'カレンダーを開く
> If clndr_flg = True Then Me(TxtBoxName).Value = Format(clndr_date, "m月d日(aaa)") 'クリックされた日付を上書き yyyy/mm/dd
> End Sub

> あるいはテキストボックスオブジェクトを渡してもいいでしょう。

> Private Sub CommandButton1_Click()
> Call ShowCalender(Me.Syukkobi)
> End Sub


> Private Sub CommandButton2_Click()
> Call ShowCalender(Me.Nonyubi)
> End Sub


> Private Sub ShowCalender(TxtBox As Control)
> clndr_flg = False 'フラグリセット
> If IsDate(TxtBox.Value) = False Then '日付が入ってなければ
> clndr_date = Date '今日の日付を格納
> Else
> clndr_date = TxtBox.Value 'テキストボックスの日付を格納
> End If
> CalenderForm.Show 'カレンダーを開く
> If clndr_flg = True Then TxtBox.Value = Format(clndr_date, "m月d日(aaa)") 'クリックされた日付を上書き yyyy/mm/dd
> End Sub



[返信 3] Re : カレンダーを使用してテキストボックスへの入力について
投稿者 : スズキ     投稿日時 : 2024/07/12(Fri) 09:11:31
解決済みにさせていただきます。
ありがとうございました。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-03 16:48:29 )
タイトルとURLをコピーしました