[[20211126091245]] 『複数選択したリストボックスをセルに表示』(天丼) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『複数選択したリストボックスをセルに表示』(天丼)

おはようございます。
ユーザーフォームにリストボックスを設置、選択内容を転記しようと思っていますがなかなかできません。
ご教授お願いします。

・複数列のセルを参照してリストボックスに表示(別シート"リスト"A列B列)
・リストボックスは複数選択
・最終行を取得して、選択した内容をセルに転記(row_Last)

【ListBox2の表示コード】
Private Sub UserForm_Initialize()

Dim lastrow As Long
lastrow = Sheets("リスト").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox2
.ColumnHeads = True
.ColumnCount = 2
.ColumnWidths = "50;30"
.RowSource = "リスト!" & Range("A2", "B" & lastrow).Address
End With
End Sub

【セルに反映コード】
※コードの途中から記述しています。

Dim i As Integer
Dim Clm As Integer

Clm = 7 'Hの列から記述

'セルへ転記
With ListBox2
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) Then
Clm = Clm + 1
Cells(row_Last, Clm) = ListBox2.List(i)
End If
Next i
End With

上記のコードでは、リストボックスに複数表示設定していますが、
セルに転記されるのは
"リスト!" & Range("A2")のAの列のみになってしまいます。

H1、I1、J1、K1、L1…とセルを別々に表示させていきたいので、
どこが動作をおかしくさせているのか教えて下さい。

以上、宜しくお願いします。

< 使用 Excel:Office365、使用 OS:unknown >


>セルに転記されるのは、"リスト!" & Range("A2")のAの列のみになってしまいます。
⇒そいうコードになっていますね。

>H1、I1、J1、K1、L1…とセルを別々に表示させていきたい
⇒なんと表示させたいのか、リスト内容と共に提示してください。
(tkit) 2021/11/26(金) 10:00


 Dim i As Long
 For i = 0 To ListBox2.ColumnCount - 1
  Activecell.Offset(,i).Value = ListBox2.List(ListBox2.ListIndex, i)
 Next

もしかしてこういうものでしょうか。
(きまぐれおじさん) 2021/11/26(金) 10:04


 >>H1、I1、J1、K1、L1…とセルを別々に表示させていきたい

    Dim i As Long
    Dim Clm As Long
    Dim row_Last As Long

    Clm = 8 'Hの列から記述
    With Me.ListBox2
        For i = 0 To ListBox2.ListCount - 1
            If ListBox2.Selected(i) Then
                row_Last = Cells(Rows.Count, Clm).End(xlUp).Row + 1
                Cells(row_Last, Clm) = .List(i, 0)
                Cells(row_Last, Clm + 1) = .List(i, 1)
                Clm = Clm + 2
            End If
        Next i
    End With

(ピンク) 2021/11/26(金) 10:14


 >H1、I1、J1、K1、L1…とセルを別々に表示させていきたい
 A列のデータのみH1、I1、J1、K1、L1…と転記するなら

    Clm = 8 'Hの列から記述
    With Me.ListBox2
        For i = 0 To ListBox2.ListCount - 1
            If ListBox2.Selected(i) Then
                row_Last = Cells(Rows.Count, Clm).End(xlUp).Row + 1
                Cells(row_Last, Clm) = .List(i, 0)
                Clm = Clm + 1
            End If
        Next i
    End With

(ピンク) 2021/11/26(金) 10:17


コメント頂いた方、ありがとうございます。
tkit様、提示不足ですみません。

コメント内容を参考に思い通りのものができました!!
ありがとうございます!!
(天丼) 2021/11/26(金) 13:50


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.