[[20180301144243]] 『リストボックスの値をセルに反映』(にに) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リストボックスの値をセルに反映』(にに)

こんにちは。質問させて下さい。

ユーザーフォームを作成し、フォーム上にリストボックスを置いています。
そこで、リストボックスに表示されている値をセルに反映させたいと思い、フォーム上にボタンを置いて下記のコードを作成しました。

Private Sub CommandButton1_Click()

    Dim i As Long
    Dim r As Long

    r = 4
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            Cells(r, "B") = ListBox1.List(i)
            r = r + 1
        End If
    Next i
    Cells(r, "B") = "終了"
    Unload UserForm1

End Sub

あらかじめA3〜B32に罫線を入れ(3行目はタイトル)、ボタンを押すと、選択している値のみをB列の4行目から反映されるようにしています。

しかし、値の数が多く32行目を超えてしまう場合があります。その場合は、3行空けた下に自動で表(罫線を書く)を作成し、値の30個目からは36行目に続きで入るようにしたいです。一つの表に29個まで値を入れられるようにし、それ以降は値の数に合わせて3行下に同じ表を作っていく、という形が理想なのですが、どのように書けば良いのかわからず困っています。申し訳ありませんがお助け願えないでしょうか。よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 Private Sub CommandButton1_Click()
     Dim i As Long
     Dim r As Long

     r = 4

     For i = 0 To ListBox1.ListCount - 1
         If ListBox1.Selected(i) = True Then
             Cells(r, "B") = ListBox1.List(i)
             r = r + IIf((r - 3) Mod 31 + 1 > 29, 4, 1)
         End If

     Next i
     Cells(r, "B") = "終了"
     Unload UserForm1

 End Sub

(半平太) 2018/03/01(木) 17:03


半平太さん

回答ありがとうございます。試してみたところ、3ページ目(行数でいうと68行目)からずれてしまいます。68行目から始まらなければならないところ、67行目から始まっています。2ページ目まではうまくいくのですが・・・。
(54) 2018/03/01(木) 20:38


 済みません。 32周期だったですねぇ。

 > r = r + IIf((r - 3) Mod 31 + 1 > 29, 4, 1)
               ↓
    r = r + IIf((r - 3) Mod 32 + 1 > 29, 4, 1)

(半平太) 2018/03/01(木) 21:19


コメント返信:

[ 一覧(最新更新順) ]


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