プロが教える店舗&オフィスのセキュリティ対策術

どなたか教えてください。
Sheet1にユーザーフォームを使用しデータを入力しています。
リストボックスが複数選択した後にコマンドボタンをクリックした際、
選択項目を1行のセル[Cells(myRow, 16)~Cells(myRow, 20)]に左詰めで表示したい場合はどのようにするのでしょうか?

例:リストボックスには10項目あるとして、そのうち1行目、3行目、5行目だけが選択された場合のパターンで、1行目がCells(myRow, 16)、3行目がCells(myRow, 17)、5行目がCells(myRow, 18)に表示したいのですが・・・。 最大5項目選択とみています。
※コマンドボタンは他のTextBox等も含まれ、下記のような感じです。

Private Sub CommandButton1_Click()
Dim myRow As Long

Sheets("Sheet1").Select
myRow = Range("A65536").End(xlUp).Offset(1, 0).Row
'各テキストボックの値をセルに入力
Cells(myRow, 1).Value = TextBox1.Value
Cells(myRow, 2).Value = TextBox2.Value
Cells(myRow, 3).Value = ComboBox1.Value
Cells(myRow, 4).Value = TextBox3.Value
Cells(myRow, 5).Value = TextBox4.Value
.
.
.
Cells(myRow, 16).Value =
Cells(myRow, 17).Value =
Cells(myRow, 18).Value =
.
.
.
'セルに入力が各テキストボックの値をクリア
TextBox3.Value = ""
TextBox4.Value = ""
ComboBox2.Value = ""
ComboBox3.Value = ""
'フォーカスをTextBox3に移動
TextBox3.SetFocus

End Sub

A 回答 (1件)

以下がListBox1を複数選択して、セルに転記する部分です。



'--------------------------------------
 Dim N As Integer
 Dim Clm As Integer

 Clm = 15

'''セルへ転記

 For N = 0 To ListBox1.ListCount - 1
   If ListBox1.Selected(N) Then
     Clm = Clm + 1
     Cells(myRow, Clm) = ListBox1.List(N)
   End If
 Next N

'''ListBox1の選択状態の解除

 For N = 0 To ListBox1.ListCount - 1
   ListBox1.Selected(N) = False
 Next N
'-----------------------------------------------

言わずもがなのことですが、
ListBox1は複数選択可能になっていなければいけません。
ListBox1.MultiSelect = fmMultiSelectMulti
 
    • good
    • 2
この回答へのお礼

onlyrom様、ご連絡遅くなりましてすいません。
ご回答いただいたコードで思い通りの結果が出ました。
お手数お掛けしましてありがとうございました、
感謝申し上げます。

お礼日時:2009/03/05 11:17

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