Excel VBA質問箱 IV

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

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


74011 / 76616 ←次へ | 前へ→

【7075】書き忘れた事が有りました
発言  Hirofumi E-MAIL  - 03/8/21(木) 20:27 -

引用なし
パスワード
   もう見ていないかな?
ListBox2に取り出された人員をSheet1にList出力する方法を書き忘れましたので
Upして置きます

UserFormにCommandButton3、CommandButton4を追加して下さい
尚、出力はDBシートのA列〜T列迄をコピーしてくるものとします
また、各ListBoxの非表示にした、2列目の値と、vntIndex配列の0列の値は、
DBシートの3行目を基準とした、行のOffset値と同じです
詰まり、この値に3を加算すると、DBシートの行位置が出ます

Private Sub CommandButton3_Click()

'  ListBox2の順番で出力

  Dim i As Long
  Dim lngWriteRow As Long
  Dim lngCopyRow As Long
  Dim wksResult As Worksheet
  
  '結果出力シートを設定
  Set wksResult = Worksheets("Sheet1")
  '結果出力シートをクリア
  wksResult.Cells.ClearContents
  '出力行を指定
  lngWriteRow = 1
  With Worksheets("DB").Cells(3, 1)
    'DBシートの列見出しをコピー
    Range(.Offset(-1, 0), _
        .Offset(-1, 19)).Copy _
          Destination:=wksResult.Cells(lngWriteRow, 1)
    '出力行を更新
    lngWriteRow = lngWriteRow + 1
    'ListBox2の先頭から読み出し
    For i = 0 To ListBox2.ListCount - 1
      'DBの行位置のOffset値を取得
      'List(i, 1)の値はDBシートの3行目を基準としたOffset値
      lngCopyRow = ListBox2.List(i, 1)
      'DBシートから指定行をコピーして、結果シートにペースト
      Range(.Offset(lngCopyRow, 0), _
          .Offset(lngCopyRow, 19)).Copy _
            Destination:=wksResult.Cells(lngWriteRow, 1)
      '出力行を更新
      lngWriteRow = lngWriteRow + 1
    Next i
  End With
  
  Set wksResult = Nothing
  
  'UserFormを閉じる
  Unload Me
  
End Sub

Private Sub CommandButton4_Click()

'  DBシートの順番で出力

  Dim i As Long
  Dim lngWriteRow As Long
  Dim wksResult As Worksheet
  
  '結果出力シートを設定
  Set wksResult = Worksheets("Sheet1")
  '結果出力シートをクリア
  wksResult.Cells.ClearContents
  '出力行を指定
  lngWriteRow = 1
  With Worksheets("DB").Cells(3, 1)
    'DBシートの列見出しをコピー
    Range(.Offset(-1, 0), _
        .Offset(-1, 19)).Copy _
          Destination:=wksResult.Cells(lngWriteRow, 1)
    '出力行を更新
    lngWriteRow = lngWriteRow + 1
    'vntIndex配列の先頭より読み出し
    For i = 0 To UBound(vntIndex, 1)
      'vntIndex(i, 0)がFalseの場合、ListBox2にListされている
      If vntIndex(i, 0) = False Then
        'iはDBシートの3行目を基準としたOffset値と同じ
        'DBシートから指定行をコピーして、結果シートにペースト
        Range(.Offset(i, 0), _
          .Offset(i, 19)).Copy _
            Destination:=wksResult.Cells(lngWriteRow, 1)
        '出力行を更新
        lngWriteRow = lngWriteRow + 1
      End If
    Next i
  End With
  
  Set wksResult = Nothing
  
  'UserFormを閉じる
  Unload Me
  
End Sub
70 hits

【7005】リストボックスへのアイテム追加 Cager 03/8/19(火) 23:44 質問
【7010】Re:リストボックスへのアイテム追加 INA 03/8/20(水) 9:08 質問
【7021】Re:リストボックスへのアイテム追加 Cager 03/8/20(水) 14:59 質問
【7034】Re:リストボックスへのアイテム追加 Hirofumi 03/8/20(水) 21:36 回答
【7052】Re:リストボックスへのアイテム追加 Cager 03/8/21(木) 11:03 お礼
【7075】書き忘れた事が有りました Hirofumi 03/8/21(木) 20:27 発言

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