ここから本文です

ユーザーフォームからの転記 宜しくお願いします。 図の様なユーザーフォーム...

beg********さん

2019/1/3112:11:47

ユーザーフォームからの転記

宜しくお願いします。
図の様なユーザーフォームを作りました。

エクセルシート(入力)のD6からD35まで日にちがあります。

行いたい作業は、フォーム上にある日付と一致した(入力)シートに登録ボタンを押した際に転記されるよう作成したいのです。

単純な転記(数値の入力)なのでユーザーフォームを使うまでも無いとは思うのですが、宜しくお願いします。

日付の取得は
Private Sub UserForm_Initialize()
TextBox1.Text = Format$(Date, "yyyy年mm月dd日")
End Sub
としています。

①日付テキストBOXが日付であることの判断?
②日付が合致した行への転記

についてご教授ください。

宜しくお願いします。

TextBox1.Text,ユーザーフォーム,天気,End Sub,日付,MsgBox,Dim i As Range

閲覧数:
94
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

c72********さん

2019/1/3113:13:24

>①日付テキストBOXが日付であることの判断?
UserForm_Initializeで日付入れてるのに必要でしょうか。

【前提】
日付が記載されている範囲はA4:A33
Aグループのいちご(開始)はC列~Bグループのりんご(終了)がJ列
テキストボックスは、AいちごからTextBox2~TextBox9の連番で昇順に配置

Private Sub CommandButton1_Click()
Dim i As Range, j As Long
Set i = Range("A4:A33").Find(Format(Date, "m月d日"), LookAt:=xlWhole, LookIn:=xlValues)
'本日の行があるかどうか
If i Is Nothing Then
MsgBox "本日の行が存在しません。"
Exit Sub
Else
'あったら転記
For j = 3 To 10
Cells(i.Row, j) = Controls("TextBox" & j - 1).Text
Next j
End If
End Sub

こんな感じになります。

  • 質問者

    beg********さん

    2019/1/3115:22:54

    ご教示有難うございます。
    思い通りの結果になりませんでした。

    TEXTBOX1は今日の日付を取得していますが、日付を打ち変える可能性があり、
    イニシャライズの他に
    Private Sub TextBox1_AfterUpdate()
    With Me.TextBox1
    If IsDate(.Value) Then
    .Value = Format(.Value, "yyyy年mm月dd日")
    End If
    End With
    End Sub
    としてます。

    書いていただいたコードを試したところ、TEXTBOX1が空欄でも、他の日付が入っていても本日の行に転記されました。

    求めたいのは、
    TEXTBOX1に入った日付を取得して、A列の日付と一致した行に転記したいと考えています。

    この画像ではA列には2月1日~28日までありますが、
    例えば、TEXTBOX1に3月1日と入力した場合、”日付は見つかりません”の答えが欲しいと考えています。

    また、Range("A4:A33")をRange("D4:D33")に変えただけで"本日の行が存在しません。"となるのは何故でしょうか。


    説明不足で申し訳ありません。

    宜しくお願いします。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/2/4 12:44:01

お示しいただいたコードで解決しました。

有難うございました。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tra********さん

2019/1/3112:33:14

①日付テキストBOXが日付であることの判断?
If IsDate(TextBox1.Text) Then
MsgBox "日付です"
Else
MsgBox "日付ではありません"
End If


②日付が合致した行への転記
行番号を取得出来たらいいということですよね?

Dim i As Variant
With Range("D6:D35")
i = Application.Match(CLng(CDate(TextBox1.Text)), .Cells, 0)
If IsError(i) Then
MsgBox "日付は見つかりません"
Else
MsgBox "行番号は、" & .Cells(i).Row
End If
End With

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる