dポイントプレゼントキャンペーン実施中!

テキストボックスの中で、[実行日]に文字列2000531で入力したら2020/05/31に変更しなおかつ、その日付から一年後に別のテキストボックスの[有効期日]に2021/05/31とif文で日付をいれたい。

Probate Sub 実行日_Enter ()
Dim dt As date
Dim d yAs dete
dt=Me.実行日
dy=Me.有効期日





If 有効期日周期.value ="1年” then
dy=DateAdd ("yyyy",1,dt)
Me.有効期日=dy
End If
End sub
If文はネットで調べてなんとなく形になったのですが、文字列からの日付の変換がわかりません。
Sub のプロシャージャもEnter でいいのかexitがいいのか全然わかりません。
よろしくお願いします。

質問者からの補足コメント

  • tom04さん回答ありがとうございました。
    ですが、私のスキルが底辺過ぎてどう説明、変更したらいいのかわからないので、
    わかることを書きます。
    userformの中にテキストボックスを作成して、
    オブジェクト名を[実行日]として、もう2つテキストボックスを作成し、
    オブジェクト名を[有効期日周期]と[有効期日]としました。

    Private Sub Commandbutton1_Enterを実行_click()に変更
    Dim my Y As long,myM As long,myD As long
    Dim myDate As Date  

    With TexBox1 を実行日に変更
    最後の
    TextBox2 を有効期日に変更したらいいのでしょうか?

    プログラムを全部乗せたいのですが、文字数に限りがあるので変更箇所の確認のみ
    入力しました。
    よろしくお願いします。

      補足日時:2020/05/31 14:58

A 回答 (1件)

こんにちは!



>2000531で入力したら・・・
おそらく「0」が一つ多いのでは?
とりあえずテキストボックス1には6桁数値の入力だとしての一例です。

Textbox1.Change でできそうですが、
とりあえずコマンドボタンクリックでやってみました。
テキストボックス1に入力 → テキストボックス2に1年後を表示!となります。

テキストボックスは文字列になりますので、シリアル値に変えてやる必要があります。
一例です。

Private Sub CommandButton1_Click()
 Dim myY As Long, myM As Long, myD As Long
 Dim myDate As Date

  With TextBox1
   myY = Left(.Value, 2)
   myM = Mid(.Value, 3, 2)
   myD = Right(.Value, 2)
   myDate = DateSerial(myY, myM, myD)
   .Value = myDate
  End With
   TextBox2 = DateAdd("yyyy", 1, myDate)
End Sub

※ 本来であれば、細かいエラー処理(テキストボックス1の入力がちゃんとシリアル値として認識されるかどうか)などが
必要なのですが、まずはこの程度で・・・m(_ _)m
    • good
    • 0
この回答へのお礼

tom04さん
早々回答ありがとうございました。
初めて投稿の為、説明不足ですみませんでした。ほぼ同じ内容の質問を投稿したので、よろしくお願いします。
プログラムを全部のせているので、回答お願いします。
ありがとうございました。

お礼日時:2020/05/31 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!