|
Columnプロパティを使うとよいと思います。
参考にしてください。
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim ws As Worksheet
Dim flg As Boolean
Dim myData, myData2()
Dim i As Long, j As Long, cn As Long
Dim LastRow As Long
'対象Bookの指定
For Each wb In Workbooks
If wb.Name = "DATA.xlms" Then
flg = True
Exit For
End If
Next
If flg = False Then
Set wb = Workbooks.Open(ThisWorkbook.Path & "\DATA.xlsm")
End If
'配列の作成
For Each ws In wb.Worksheets
With ws
LastRow = .Cells(Rows.count, 1).End(xlUp).Row
myData = .Range(.Cells(1, 1), .Cells(LastRow, 7)).Value
End With
For i = LBound(myData) To UBound(myData)
If myData(i, 4) Like "*" & TextBox1.Value & "*" Then
cn = cn + 1
ReDim Preserve myData2(1 To 4, 1 To cn)
myData2(1, cn) = myData(i, 1)
myData2(2, cn) = myData(i, 3)
myData2(3, cn) = myData(i, 4)
myData2(4, cn) = myData(i, 6)
End If
Next i
Next
'
With ListBox1
.ColumnCount = 4
.ColumnWidths = "50;200;200;50"
.Column() = myData2
End With
wb.Close SaveChanges:=False
End Sub
なお、投稿にあたっては、手打ちせずに、
VBE(エディタ−)にあるコードをそのままコピーペイストしてください。
手打ちミスの修正までするのは無駄です。議論が噛み合わないこともあります。
また、冒頭に Option Explicit として、
未宣言の変数が無いようにしてください。
オプション設定を変更することで、自動的に、
Option Explicit を書き込む設定にしておくことを推奨します。
|
|