Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12994 / 13646 ツリー ←次へ | 前へ→

【7554】リストボックスのチェックボックス 123 03/9/8(月) 16:19 質問
【7570】Re:リストボックスのチェックボックス INA 03/9/8(月) 17:55 回答
【7573】Re:リストボックスのチェックボックス 123 03/9/8(月) 18:16 お礼
【7571】Re:リストボックスのチェックボックス ichinose 03/9/8(月) 17:58 回答
【7574】Re:リストボックスのチェックボックス 123 03/9/8(月) 18:21 お礼

【7554】リストボックスのチェックボックス
質問  123  - 03/9/8(月) 16:19 -

引用なし
パスワード
   皆さん こんにちは 123です。

ちょっと困っています。どなたかお助けください。

UserForm1にListBox1があります。
これは以下のソースになっています。

(AdvanceFilterで複数行のデータをSheet2に転記したあと)
With Sheet2
lr = .Cells(1, 4).CurrentRegion.Rows.Count
L1.RowSource = "Sheet2!D1:G" & lr
End With

リストボックスはMultiSelectをMultiにしてあります。
また、ListStyleはOptionにしてあります。
ListBox1.Column=4 です。

そこで、複数選んだリストボックスのデータを
Sheet1に写したいのです。
ひとつひとつ写すのではなく、複数選んだ状態で一斉に
写したいのです。(コマンドボタン等で一気に処理という意味)

無理でしょうか?

【7570】Re:リストボックスのチェックボックス
回答  INA E-MAIL  - 03/9/8(月) 17:55 -

引用なし
パスワード
   リストボックスは、使ったことがないのでヘルプを見ながら作ってみました。
無理があるかもしれませんが、叩き台くらいにはなると思います。(なって欲しい・・)

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

With Worksheets("sheet1")
  For r = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(r) = True Then
     
      For c = 0 To 3
        .Cells(r + 1, c + 1).Value = ListBox1.List(r, c)
      Next c
    
    End If
  Next r

'空白行の削除 
 For r = ListBox1.ListCount To 1 Step -1
  If .Cells(r, 1).Value = "" Then
    .Rows(r).Delete
  End If
 Next r

End With
End Sub

【7571】Re:リストボックスのチェックボックス
回答  ichinose  - 03/9/8(月) 17:58 -

引用なし
パスワード
   ▼123 さん:
こんばんは。

>皆さん こんにちは 123です。
>
>ちょっと困っています。どなたかお助けください。
>
>UserForm1にListBox1があります。
>これは以下のソースになっています。
>
>(AdvanceFilterで複数行のデータをSheet2に転記したあと)
>With Sheet2
>lr = .Cells(1, 4).CurrentRegion.Rows.Count
>L1.RowSource = "Sheet2!D1:G" & lr
>End With
>
>リストボックスはMultiSelectをMultiにしてあります。
>また、ListStyleはOptionにしてあります。
>ListBox1.Column=4 です。
>
>そこで、複数選んだリストボックスのデータを
>Sheet1に写したいのです。
>ひとつひとつ写すのではなく、複数選んだ状態で一斉に
>写したいのです。(コマンドボタン等で一気に処理という意味)
>
>無理でしょうか?
Sheet1のA列からD列にリストボックスで選択された行を移しています

'==============================================
Private Sub CommandButton1_Click()
  jdx = 1
  With ListBox1
    For idx = 0 To .ListCount - 1
     If .Selected(idx) = True Then
       Worksheets("sheet1").Range("a" & jdx & ":d" & jdx).Value _
          = Array( _
          .List(idx, 0), .List(idx, 1), _
          .List(idx, 2), .List(idx, 3))
       jdx = jdx + 1
       End If
      Next
    End With
End Sub

【7573】Re:リストボックスのチェックボックス
お礼  123  - 03/9/8(月) 18:16 -

引用なし
パスワード
   ▼INA さん: こんばんは

ありがとうございました。本当に助かりました。
Selected は、「選択している場合Trueを返す」ということ
だったので、複数選択している場合はダメかと思っていました。

(ちょっと修正)
Sheet1に写す際に、Sheet1のRowを変数kにしました。

本当にありがとうございました。

>Private Sub CommandButton1_Click()
>Dim r As Long
>Dim c As Long
Dim k As Long
>
>With Worksheets("sheet1")
 k=1
>  For r = 0 To ListBox1.ListCount - 1
>    If ListBox1.Selected(r) = True Then
>     
>      For c = 0 To 3
>        .Cells(r + 1, c + 1).Value = ListBox1.List(r, c)
            r + 1を変数kにしました。
>      Next c
     k=k+1
>    End If
>  Next r
>
>'空白行の削除 
> For r = ListBox1.ListCount To 1 Step -1
>  If .Cells(r, 1).Value = "" Then
>    .Rows(r).Delete
>  End If
> Next r
>
>End With
>End Sub

【7574】Re:リストボックスのチェックボックス
お礼  123  - 03/9/8(月) 18:21 -

引用なし
パスワード
   ▼ichinose さん:
こんばんは。

INAさんからご回答を頂き、お礼の返信をした後
「うわっichinoseさんからも きていたっ」と
思わず声をあげてしまいました。

ichinoseさんも ありがとうございました。

タイミングが合わず すみませんでした。
これに懲りず 今後とも宜しくお願い致します。

12994 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free