「みんな教えて! 選手権!!」開催のお知らせ

請求書を作る為のユーザーフォーム1を作っています。請求項目を入れるテキストボックスは20個あります。複数選択したリストボックスの値をテキストボックス1から6まで(20まで作るつもりです。)を上から順に転記したいです。毎回同じリストボックスの値を選ぶわけではありませんし、毎回6個のテキストボックスを使うわけでもありません。リストボックスの値を複数選ぶことはできたのですが、それ以降どのようにしたらいいのかわかりません。教えて頂きたいです。よろしくお願いします。
順序は、1、リストボックスから複数選ぶ。2、CommandButton1を押す。3、テキストボックスに値が上から順に転記される。

「Excel VBA 複数選択したリストボ」の質問画像

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

  • つらい・・・

    丁寧な説明をしていただき、大変恐縮です。当方で試してみた結果を添付しました。Userform4にコードをコピペし実行しましたが、うまくいきませんでした。

    「Excel VBA 複数選択したリストボ」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2023/03/19 20:29

A 回答 (3件)

こんばんは


1列目、2列目を繋いで出力する例・・・です
必要に応じて直してください

Private Sub CommandButton1_Click()
Const lmit As Integer = 20
Dim i As Integer, cnt As Integer
Dim n As Integer
ReDim ary(lmit, 1)
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
cnt = cnt + 1
If lmit < cnt Then MsgBox "選択数がTextBoxの数を超過しています": Exit Sub
ary(n, 0) = .List(i, 0)
ary(n, 1) = .List(i, 1)
n = n + 1
End If
Next i
End With
'出力
n = 0
While ary(n, 1) <> ""
Me.Controls("TextBox" & n + 1).Text = ary(n, 0) & " : " & ary(n, 1)
n = n + 1
Wend

End Sub
    • good
    • 0
この回答へのお礼

Qchan1962様、リストボックスのNO.は表示させたくないので消してしましましたが、当方のお願いを見事形にして下さり感動しております。ありがとうございました。

お礼日時:2023/03/20 13:18

これってリストボックスは複数列?


もしそうなら必要なのは全ての列?どれかに絞る?(多分2列目かな?)
    • good
    • 0

Visual Basic for Applications (VBA) を使用して、リストボックスから選択された値をテキストボックスに転記することができます。

以下は、CommandButton1をクリックしたときに、リストボックスで選択された項目を上から順に6つのテキストボックスに転記するサンプルコードです。

Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim count As Integer
count = 1
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
For j = 1 To 6
If count > 20 Then
Exit For
End If
Controls("TextBox" & j).Text = ListBox1.List(i)
count = count + 1
Next j
End If
Next i
End Sub

請求書のテキストボックス化


櫻谷圭司
請求書を作る為のユーザーフォーム1を作っています。請求項目を入れるテキストボックスは20個あります。複数選択したリストボックスの値をテキストボックス1から6まで(20まで作るつもりです。)を上から順に転記したいです。毎回同じリストボックスの値を選ぶわけではありませんし、毎回6個のテキストボックスを使うわけでもありません。リストボックスの値を複数選ぶことはできたのですが、それ以降どのようにしたらいいのかわかりません。教えて頂きたいです。よろしくお願いします。
順序は、1、リストボックスから複数選ぶ。2、CommandButton1を押す。3、テキストボックスに値が上から順に転記される。

Visual Basic for Applications (VBA) を使用して、リストボックスから選択された値をテキストボックスに転記することができます。以下は、CommandButton1をクリックしたときに、リストボックスで選択された項目を上から順に6つのテキストボックスに転記するサンプルコードです。

VB
Copy code
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim count As Integer
count = 1
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
For j = 1 To 6
If count > 20 Then
Exit For
End If
Controls("TextBox" & j).Text = ListBox1.List(i)
count = count + 1
Next j
End If
Next i
End Sub
このコードでは、ListBox1のリスト項目が上から順に処理されます。ListBox1で選択された項目のみを処理するために、If ListBox1.Selected(i)という条件分岐が使用されています。リスト項目の値は、ListBox1.List(i)で取得されます。TextBoxの名前は、TextBox1からTextBox20までであるため、コントロール名を動的に作成するために、Controls("TextBox" & j)のように文字列を結合して使用しています。

このコードをユーザーフォーム1のコードモジュールに貼り付けて、CommandButton1のClickイベントに関連付けることができます。このコードを使用すると、リストボックスから複数の項目を選択し、CommandButton1をクリックすることで、選択された項目が上から順に最大6つのテキストボックスに転記されます。
この回答への補足あり
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A