エクセルマクロ_テキストボックスをシートに反映(その2)
エクセルマクロ初心者です。(2003使用_ユーザーフォーム)
先ほどは大変お世話になりました。
複数行に応用させようとしたのですが、管理番号が余計に記載(テキストボックス(出荷日など)が空欄であっても、管理番号だけはとられてしまいます)されてしまいます。すみませんが、ご教授よろしくお願いいたします。
リストボックス1のデータは、Sheet1を表示しています。→管理番号はSheet2のA最終行に記載されます。
テキストボックス1(回答日)は、上記の管理番号記載のとなりに、
テキストボックス2(出荷日)は、テキストボックス1記載のとなりに、
・・・とテキストボックス4(コメント)(これはK列)に1行で記載されます。
↑ここまでは、教えていただいたので、完璧なのですが、
テキストボックス2~4までの内容を、あと複数行(4件)追加できるように試してみたのですが、空欄であっても管理番号だけは常に記載されてしまいます。
テキストボックス2と5に記載されている場合は、Sheet2に値を反映させるが、空欄の場合は、値を反映させないようにしたいのです。
(Sheet1=データベース)
C5 D5
管理番号 品名
アカ12 りんご
アオ56 みかん
クロ34 なし
クロ89 すいか
アオ12 もも
(Sheet2=入力シート)
A(管理番号) B(回答日) C(出荷日) D(数量) K(コメント)
アオ56 8月9日 8月10日 75 送り先の確認
アオ56 8月11日 80
クロ34 9月4日 9月5日 80
(今回は、2行で作成した場合のマクロを記載しました)
Private Sub UserForm_Initialize()
With ListBox1
.ColumnWidths = "0;0;50;50"
.ColumnCount = 4
.RowSource = "Sheet1!A5:D" & Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row
End With
End Sub
Private Sub CommandButton1_Click()
If TextBox2.Value Then
Dim lRow As Long
With Worksheets("Sheet2")
lRow = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & lRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 2)
If IsDate(TextBox1.Value) Then
.Range("B" & lRow + 1).Value = TextBox1.Value
End If
If IsDate(TextBox2.Value) Then
.Range("C" & lRow + 1).Value = TextBox2.Value
End If
If IsNumeric(TextBox3.Value) Then
.Range("D" & lRow + 1).Value = TextBox3.Value
End If
.Range("K" & lRow + 1).Value = TextBox4.Value
End With
End If
If TextBox5.Value Then
Dim llRow As Long
With Worksheets("Sheet2")
llRow = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & llRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 2)
If IsDate(TextBox5.Value) Then
.Range("C" & llRow + 1).Value = TextBox5.Value
End If
If IsNumeric(TextBox6.Value) Then
.Range("D" & llRow + 1).Value = TextBox6.Value
End If
.Range("K" & llRow + 1).Value = TextBox7.Value
End With
End If
Dim myCtrl As Control
For Each myCtrl In Controls
If TypeName(myCtrl) = "TextBox" Then
myCtrl.Value = vbNullString
End If
Next
End Sub
(ユーザーフォーム)
リストボックス1=Sheet1のデータを反映
テキストボックス1(回答日)
テキストボックス2(出荷日),テキストボックス3(数量),テキストボックス4(コメント)←1件目
テキストボックス5(出荷日),テキストボックス6(数量),テキストボックス7(コメント)←2件目
↑1件目のみでコマンドボタンを押した場合は、1件目のみの管理番号取得をしたいのです。が今は、2件目が空欄でも管理番号はとられてしまいます。
長くなってしまいすみません。
どなたかご回答いただければ幸いです。よろしくお願いいたします。