|
もう見ていないかな?
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
|
|