アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCEL VBAについての質問です。
ユーザーフォームで複数の値をデータベースに登録したいです。
たとえばTEXTBOX1~10の値をA1セルからA10セルに入れるにはループ処理で登録できることが分かるのですが、以下のようにテキストボックスやコンボボックス、リストボックスが含まれているときはループ処理できるのでしょうか。

TEXTBOX1
TEXTBOX2
TEXTBOX3
TEXTBOX4
COMBOBOX1
COMBOBOX2
TEXTBOX5
TEXTBOX6
TEXTBOX7
COMBOBOX3

現在はA1にTEXTBOX1、A2にTEXTBOX2と指定しているのですが、途中でユーザーフォームの項目を増やしたいとなった時にすべてずらさなければならないため、他に良い方法はないか。。。と思い質問させていただきました。
ループでなくても構いませんので、後々追加があっても対応しやすい方法があれば教えていただきたいです。

質問者からの補足コメント

  • その通りです。
    しかし、データベースの登録だとA1、B1、C1....のほうがいいですね。。。

    TEXTBOX1→A1
    TEXTBOX2→B1
    TEXTBOX3→C1
    TEXTBOX4→D1
    COMBOBOX1→E1
    COMBOBOX2→F1
    TEXTBOX5→G1
    TEXTBOX6→H1
    TEXTBOX7→I1
    COMBOBOX3→J1

    で登録したいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/02/02 11:21

A 回答 (2件)

各コントールはControls("コンロール名")で参照可能です。


これを応用します。
以下は、コマンドボタン1がクリックされた時、
上記例のコントロールの内容を、Sheet1のA1~J1へ格納するサンプルです。

Private Sub CommandButton1_Click()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Dim names As Variant
Dim i As Long
names = Array("TextBox1", "TextBox2", "TextBox3", "TextBox4", "ComboBox1", "ComboBox2", "TextBox5", "TextBox6", "TextBox7", "ComboBox3")
For i = 0 To UBound(names)
ws.Cells(1, 1 + i).Value = Controls(names(i)).Text
Next
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!
まさに想定していた通りです。
これで項目の追加にも対応できそうです!

お礼日時:2023/02/02 11:34

ループ処理で


TEXTBOX1→A1
TEXTBOX2→A2
TEXTBOX3→A3
TEXTBOX4→A4
COMBOBOX1→A5
COMBOBOX2→A6
TEXTBOX5→A7
TEXTBOX6→A8
TEXTBOX7→A9
COMBOBOX3→A10
のようにA1~A10のセルに格納したいということでしょうか。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!