- ベストアンサー
VBAユーザーフォームで社員名と売上件数を転記する方法
- VBAを使用して、ユーザーフォームで社員名と売上件数を入力し、指定の範囲に転記する方法について教えてください。
- 具体的には、C3からC15までにユーザーフォームで入力した社員名を転記し、D3からD15までに売上件数を転記する処理を行いたいです。
- しかし、C3の列以降に転記することができず困っています。対応方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
添付図のJ、K列は単に説明用として入力されているのかどうかよくわかりませんが、どちらにしても、H列までしか入力できないとすれば、 retu = Cells(2, Columns.Count).End(xlToLeft).Column + 1 ↓ If Cells(3, 8) <> "" Then MsgBox "もう入力できません" Exit Sub Else retu = Cells(3, 8).End(xlToLeft).Column + 1 End If
その他の回答 (2)
- iruyasu
- ベストアンサー率37% (3/8)
retu = Cells(2, Columns.Count).End(xlToLeft).Column + 1 ↓ retu = Cells(3, Columns.Count).End(xlToLeft).Column + 1 でいいんでない?
- kon555
- ベストアンサー率51% (1845/3564)
記載列を「retu = Cells(2, Columns.Count).End(xlToLeft).Column + 1」で捕まえる構造に見えますが、 Cells(3, retu).Value = Me.txtComboBox1.Value ←社員を選択 Cells(4, retu).Value = Me.txtsuzuki.Value ←売れた件数 Cells(5, retu).Value = Me.txttoyota.Value ←売れた件数 Cells(6, retu).Value = Me.txthonnda.Value ←売れた件数 となっていて、 Cells(2, retu)に何の入力もされないので、延々と同じ列に記載し続けるコードになっています。 「Cells(2, retu).Value ="1"」 などで無意味でも入力済として成立させるなり、 「retu = Cells(3, Columns.Count).End(xlToLeft).Column + 1」 にして3行目で捕まえるなりすれば解消すると思いますよ。
補足
回答ありがとうございます。希望通りで動きました! もう1点質問なんですが、 c列の文字が記入されてるとなり(空白)から転記~右の文字列にぶつかったらとまる。コードも作ってみたんですがエラーがおきてしまいました。なにかわかりますでしょうか?