inputboxを介してユーザーから複数の入力を取得し、テーブルをフィルタリングしたいと思います。1つの列のみがフィルタリングされます。次に、行データ全体を別のシートにコピーします。以下のコードを使用しました。問題は、1つの国をフィルタリングするために使用できることです。
列Fに国がたくさんあります。入力ボックスに2つ以上の国を入力する必要があります。次に、コピーして貼り付けます。ループを追加したいのですが。しかし、私は方法がわかりません。助けて
Private Sub CommandButton1_Click()
Dim str1 As Variant
Dim Tbl As ListObject
Dim FiltRng As Range
Dim RngArea As Range
Set Tbl = Sheet1.ListObjects("DataTable")
str1 = Application.InputBox("Select the Country Code")
If str1 = False Then
MsgBox "Please select one Country", , "Input"
Exit Sub
Else
Tbl.Range.AutoFilter Field:=6, Criteria1:=str1
For Each RngArea In Tbl.Range.SpecialCells(xlCellTypeVisible).Rows
If RngArea.Row > 1 Then
If Not FiltRng Is Nothing Then
Set FiltRng = Application.Union(FiltRng, RngArea)
Else
Set FiltRng = RngArea
End If
End If
Next RngArea
If Not FiltRng Is Nothing Then
FiltRng.Copy Sheets("Sheet2").Range("A2")
End If
End If
Sheet1.ListObjects("DataTable").Range.AutoFilter Field:=6
End Sub
InputBoxからループで読み取ることができます。次のコードを試してください。
Sub Macro3()
Dim arr() As String
Dim size As Long
size = 1
Do
str1 = Application.InputBox("Select the Country Code")
ReDim Preserve arr(size)
arr(size) = str1
size = size + 1
Loop While (str1 <> vbNullString) And (str1 <> False)
ActiveSheet.Range("$A$1:$F$5").AutoFilter Field:=6, Criteria1:=arr, Operator:=xlFilterValues
End Sub
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加