プロが教えるわが家の防犯対策術!

また、質問させていただきます。

今、UserFormが開くと【TextBox1】【TextBox2】【TextBox3】に現在の日付が入るようになっています。
  【TextBox1】(年 08)
  【TextBox2】(月 03)
  【TextBox3】(日 03)

UserFormには、【CommandButton1】(登録)と【CommandButton2】(呼び出し)があります。

【CommandButton1】(登録)をクリックするとExcelに '08/03/03と表示されます。

ある日、データを間違えて入力してしまい【CommandButton2】(呼び出し)をクリックし修正する時にExcelに登録している日を【TextBox1】(年 08)【TextBox2】(月 03)【TextBox3】(日 03)と自動的に入力することは出来るでしょうか?

宜しくお願いいたします。

A 回答 (3件)

こんばんは。



>【TextBox1】 yy
>【TextBox2】 mm
>【TextBox3】 dd
>
>の形で戻すことは可能ですか?

もう少し、ご質問に対して、気をつけていれば良かったでした。すみませんね。そのご質問どおりに考えると、

 If IsDate(Cells(i, 2).Text) Then
      myDate = Cells(i, 2).Value2
      TextBox1.Value = Format$(myDate, "yy")
      TextBox2.Value = Format$(myDate, "mm")
      TextBox3.Value = Format$(myDate, "dd")
 End If
 
こんな風にするのが、一番忠実のような気がしました。たぶん、ご存知ですよね。

なお、Format 関数の、$ が、付いているのは、テキスト出力しているということです。そのままにすると、Variant 出力になりますが、あまり、今の時代は、付いていても、付いていなくても、大きな違いはないと思います。
    • good
    • 0
この回答へのお礼

有難うございました。
解決しました。

しかし、よく直ぐに分かりますね。とても助かりました。
自分なんか、参考書を広げて悩んだあげくここで聞く始末なので・・・
もう少し、色々勉強します。

お礼日時:2008/03/07 19:59

こんにちは。



>【TextBox1~3】

こちらに戻すということですね。

>TextBox】に呼び出したいNo.を入力して【CommandButton2】(呼び出し)をクリックするとそのNo.の行のデータが【TextBox】・【ComboBox】・【ListBox】にデータが反映される(戻る?)ようにしているのですが、

私は、ここの仕組みがどうされているのか分からなかったのですが、まあ、それはそのままにしておきます。

【TextBox】に呼び出したいNo.
のTextbox を TextBox4 とします。

Private Sub CommandButton1_Click()
に以下のように加えたらいかがですか?

Cells(i, 2).Value2 , Value2 でなくても、Value だけでもよいです。
 i = TextBox4.Value + 9 は、行の呼び出し

  Dim myDate As Date
  Dim i As Long
  If Val(TextBox4.Value) > 0 Then
    i = TextBox4.Value + 9
    If IsDate(Cells(i, 2).Text) Then
      myDate = Cells(i, 2).Value2
      TextBox1.Value = Year(myDate)
      TextBox2.Value = Month(myDate)
      TextBox3.Value = Day(myDate)
    End If
  End If


なお、お礼欄を使えば、こちらに直接連絡が入りますが、補足欄ですと、回答が遅くなります。予めご了解ください。
    • good
    • 0
この回答へのお礼

有難うございます。
TextBoxに反映(戻す)出来ました。

ただ、もう1つ説明不足だったのですが、上記の場合TextBoxに戻した場合
【TextBox1】 yyyy
【TextBox2】 m
【TextBox3】 d

になりますが、これを

【TextBox1】 yy
【TextBox2】 mm
【TextBox3】 dd

の形で戻すことは可能ですか?

それと、丁寧にお礼欄の使い方(?)まで教えて下さいまして有難うございました!

お礼日時:2008/03/07 18:15

こんばんは。



同じテキストボックスを使いながら、前回の話とは違うのですね。
>自動的に入力することは出来るでしょうか?

質問の中の文章では、不十分です。

TextBox1 ~3 にセルから入れるのは、出力の反対のことをすればよいはずです。

>ある日、データを間違えて入力
ある日とはいつですか?任意のセルのことですか?

修正するセルをどのように決定するのでしょうか?
一体、どこのセルなのでしょうか?
起動時に登録で入れた部分でしょうか?

直すのは、UserForm をモードレスにして、直接、手書きのほうが早かったりするのではないでしょうか?

この回答への補足

早速の回答有難うございました。
説明不足で申し訳ありませんでした。

UserFormには、日付の【TextBox1~3】以外にも、入力が出来る【TextBox】や【ComboBox】・【ListBox】があります。

これらを、入力して【CommandButton1】(登録)をクリックすることにより下記の様にExcelに反映させるようにしています。(登録する毎に最終行に自動的にNo.を入力して反映します。)

   A     B      C     D   ・・・・


9 No.   日付     商品名     価格 ・・・・・
10 1   2008/03/03  ○○○    ○円
11 2   2008/03/03  ×××    ×円
12 3   2008/03/03  △△△    △円
13 4   2008/03/03  ■■■    ■円
14 5   2008/03/03  ◎◎◎    ◎円
15 6   2008/03/03  □□□    □円
16 7   2008/03/03  ▼▼▼    ▼円




上記の様なデータを作成していきましたが、「入力間違い」や「修正」が出てきた場合、UserFormにある【TextBox】に呼び出したいNo.を入力して【CommandButton2】(呼び出し)をクリックするとそのNo.の行のデータが【TextBox】・【ComboBox】・【ListBox】にデータが反映される(戻る?)ようにしているのですが、日付だけはどのようにしたらいいか分かりません。
日付は、Excelの B列に yyyy/mm/ddの形式で入っています。
UserFormに反映させる方法があれば教えて頂きたいのですが・・・

補足日時:2008/03/05 16:51
    • good
    • 0

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