プロが教えるわが家の防犯対策術!

リストボックスで選択したものを25~28へ赤字の順番のようにに入力したいのですが、
下記のプログラムだと右に順番に入力されてしまいます。
プログラムをどう変えればいいか教えていただけますでしょうか?

With ListBox11
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Cells(25, Columns.Count).End(xlToLeft).Offset(, 1) = .List(i)
End If
Next i
End With

「VBA 行入力について」の質問画像
教えて!goo グレード

A 回答 (5件)

dim m as long, n as long


.
.
.
m = 0
n = Cells(25, Columns.Count).End(xlToLeft).Offset(,1).column
With ListBox11
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Cells(25, n).Offset(m) = .List(i)
m = m + 1
End If
Next i
End With
    • good
    • 0
この回答へのお礼

思った通りのことができました。
ありがとうございます。

お礼日時:2022/01/05 09:04

#2です


すみません
ListBox11 ですね
25行目には値が無いのね。。

Dim i As Long, n As Integer
Dim rng As Range
Set rng = Cells(25, 2)
With ListBox11
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
For n = 1 To 3
If rng.Offset(n) = "" Then rng.Offset(n) = .List(i): Exit For
Next
End If
Next i
End With

少しベタかな
    • good
    • 1

No.1の者です。



失礼しました。先ほどの物だと、空白行ができてしまいますね。
Jに行の位置情報を持たせて、下記でどうでしょうか?

With ListBox11
J=25
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Cells(J, 1).Value = .List(i)
J=J+1
End If
Next i
End With
    • good
    • 0

こんにちは


>リストボックスで選択したものを25~28へ赤字の順番のようにに入力したい

こんな感じかしら
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
If Cells(28, 2) = "" Then Cells(29, 2).End(xlUp).Offset(1) = .List(i)
End If
Next i
End With
    • good
    • 0

こんにちは。



下記で、どうでしょうか?

セルの位置が固定なら、Cells(25+i, 1)の様に指定が可能です。
25+i(i=0~.ListCount - 1) : 行の指定 25行からListCountの個数分
1 : 列の指定 : A列ですね。

With ListBox11
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Cells(25+i, 1).Value = .List(i)
End If
Next i
End With
    • good
    • 0

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

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

教えて!goo グレード

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

人気Q&Aランキング