VBA ステートメントをまとめたい
OSはXP
Excelは2003を使用しています。
下記は組んだマクロの一部ですが、
ComboBoxが20まであるので、大変長いステートメントになってしまうので、
withの中を何とかまとめられないかと思い、こちらで教えて頂きたく書き込みました。
説明不足のところは追記致しますので、
何卒、よろしくお願い致します。
With ws 'Cells(行,列)
If ComboBox1 <> "" Then
Cells(i + 1, 1) = TextBox1.Value '日付
Cells(i + 1, 2) = TextBox2.Value '伝票No.
Cells(i + 1, 24) = TextBox3.Value '郵便番号
Cells(i + 1, 25) = TextBox4.Value '住所
Cells(i + 1, 3) = TextBox5.Value '社名
Cells(i + 1, 4) = TextBox6.Value '担当者名
Cells(i + 1, 18) = TextBox601.Value '税抜合計
Cells(i + 1, 19) = TextBox602.Value '消費税
Cells(i + 1, 20) = TextBox603.Value '合計
Cells(i + 1, 22) = TextBox701.Value '備考
Cells(i + 1, 23) = TextBox702.Value '未定
'------------------------------------------------------
Cells(i + 1, 6) = ComboBox1.Value '商品コード
Cells(i + 1, 7) = TextBox11.Value 'メーカー名
Cells(i + 1, 8) = TextBox12.Value 'ModelNo.
Cells(i + 1, 9) = TextBox13.Value '品名(英
Cells(i + 1, 10) = TextBox14.Value '品名(日
Cells(i + 1, 11) = TextBox15.Value '仕上(英
Cells(i + 1, 12) = TextBox16.Value '仕上(日
Cells(i + 1, 13) = TextBox17.Value '単価
Cells(i + 1, 14) = TextBox18.Value '掛け率
Cells(i + 1, 15) = TextBox19.Value '売価
Cells(i + 1, 16) = TextBox20.Value '数量
Cells(i + 1, 17) = TextBox21.Value '小計
Cells(i + 1, 21) = TextBox22.Value '社内コメント
'----------------------------------------------------
'----------------------------------------------------
If ComboBox2 <> "" Then
Cells(i + 2, 1) = TextBox1.Value '日付
Cells(i + 2, 2) = TextBox2.Value '伝票No.
Cells(i + 2, 24) = TextBox3.Value '郵便番号
Cells(i + 2, 25) = TextBox4.Value '住所
Cells(i + 2, 3) = TextBox5.Value '社名
Cells(i + 2, 4) = TextBox6.Value '担当者名
Cells(i + 2, 18) = TextBox601.Value '税抜合計
Cells(i + 2, 19) = TextBox602.Value '消費税
Cells(i + 2, 20) = TextBox603.Value '合計
Cells(i + 2, 22) = TextBox701.Value '備考
Cells(i + 2, 23) = TextBox702.Value '未定
'------------------------------------------------------
Cells(i + 2, 6) = ComboBox2.Value '商品コード
Cells(i + 2, 7) = TextBox31.Value 'メーカー名
Cells(i + 2, 8) = TextBox32.Value 'ModelNo.
Cells(i + 2, 9) = TextBox33.Value '品名(英
Cells(i + 2, 10) = TextBox34.Value '品名(日
Cells(i + 2, 11) = TextBox35.Value '仕上(英
Cells(i + 2, 12) = TextBox36.Value '仕上(日
Cells(i + 2, 13) = TextBox37.Value '単価
Cells(i + 2, 14) = TextBox38.Value '掛け率
Cells(i + 2, 15) = TextBox39.Value '売価
Cells(i + 2, 16) = TextBox40.Value '数量
Cells(i + 2, 17) = TextBox41.Value '小計
Cells(i + 2, 21) = TextBox42.Value '社内コメント
End If
End If
お礼
ElseIFでなくandにしたところ、、転記できました。ありがとうございます。
補足
IF文はFor~Next文の中にありますが、このForの所をテキトーに書いたのがよくなかったのか、それともIF文に間違いがあるのかリストに表示こそされますが、TextBox1の数値は指定のセルに書き込まれません。問題箇所は特定できていて、ListBox2の部分です。 If ListBox1.selected(a) Then cells(ListBox1.List(a),39).Value = UserForm1.TextBox2 End If 場合は問題ありません。 しかし、 If ListBox1.selected(a) Then ElseIf ListBox2.selected(b) Then cells(ListBox1.List(a),ListBox2.List(b)).Value = UserForm1.TextBox2 End If この場合にはエラーだらけになります。