• ベストアンサー

どうしても分かりません(初歩的ですが・・・)

ユーザーフォーム(オブジェクト名:pro_regit)に例えばテキストボックスを4つ貼り付けました。 コードを下のようにすると、データベース化できるという基本的な仕組みです。 Private Sub CommandButton1_Click() Dim i As Integer, j As Integer Dim myText As MSForms.TextBox For i =1 to 4 Set myText = Pro_regit.Controles("TextBox" & i) ActiveCell.Offset(0,j).Value = myText.Text j=j+1 Next i Range("A65536").End(xlUP).Offset(1).Select End Sub 本を参考にここまで入力して成功しました。 しかし、以下のことがどうしても分かりません。 このユーザーフォームにコンボボックスも加えて同様の操作をする場合、コードをどのようにすればよいのでしょうか? つまり、コンボボックスのみを使って同様の操作を行うにはTextBoxをComboBoxに変えればよいですが、この2つを同時に使う場合はどんな記述にすればよいのでしょうか? 本当にややこしい文章で申し訳ありません。どなたかご教示頂けませんか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#187541
noname#187541
回答No.1

こんにちは。 For Eachを使うのがいいのでは? Private Sub CommandButton1_Click() Dim j As Integer Dim myCtrl As Control For Each myCtrl In Controls If TypeName(myCtrl) = "TextBox" Or TypeName(myCtrl) = "ComboBox" Then ActiveCell.Offset(0,j).Value = myCtrl.Text j=j+1 Next Range("A65536").End(xlUP).Offset(1).Select End Sub 試してませんがどうでしょうか。

noname#91219
質問者

お礼

ご回答ありがとうございます。 ただ、「Nextに対するForがありません」と表示されるのですが・・・

noname#91219
質問者

補足

補足欄になってすみません。 ずっと七転八倒して考えていたのですが、ようやく解消されました。本当にありがとうございます!

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

横から失礼します。 j=j+1 と Next の間に End if が無いためでしょう。

noname#91219
質問者

お礼

End Ifですか!確かに。 ・・・成功いたしました。ご回答ありがとうございます!

関連するQ&A

専門家に質問してみよう