1
ユーザから2つの範囲の値を取ってデータセットをフィルタリングしようとしています。私はこれらの2つの値を2つの変数 't1' & 't2'で使用しています。後で、これらの変数を使用してデータセットをフィルタリングしています。しかし、問題は、これらのユーザーのプロンプト値で、私のフィルターが動作していません。フィルタリングは固定値で正常に動作しますが、可変値では機能しません。利便性のためのコードを提供する:もちろんユーザプロンプトVBAでフィルタ
`Sub GetUserInput()
Dim t1 As Long, t2 As Long
t1 = InputBox("Type the upper torque limit")
t2= InputBox("Type the lower torque limit")
Application.ScreenUpdating = False
'Below Code segment will find out the Time, Input Torque & Output speed columns from the raw data set regardless of their position
Sheets(3).Activate
Range("A1").Select
Sheets(2).Activate
Columns("A").Select
Selection.Copy
Sheets(3).Activate
Selection.PasteSpecial
ActiveCell.Select
Sheets(2).Activate
'Find "D2TQSH" in Row 1
With Sheets(2).Rows(1)
Set t = .Find("D2TQSH", lookat:=xlPart)
'If found, copy the column to Sheet 2, Column A
'If not found, present a message
If Not t Is Nothing Then
Columns(t.Column).EntireColumn.Copy _
Destination:=Sheets(3).Range("B1")
Else: MsgBox "D2TQSH Not Found"
End If
End With
'Find "D2SPDFR" in Row 1
With Sheets(2).Rows(1)
Set t = .Find("D2SPDFR", lookat:=xlPart)
'If found, copy the column to Sheet 2, Column A
'If not found, present a message
If Not t Is Nothing Then
Columns(t.Column).EntireColumn.Copy _
Destination:=Sheets(3).Range("C1")
Else: MsgBox "D2SPDFR Not Found"
End If
End With
'Below code segment will filter out data based on the user input values
Sheets(3).Activate
With Sheet3
.AutoFilterMode = False
.Range("A1:C1").AutoFilter
.Range("A1:C1").AutoFilter Field:=2, Criteria1:=">=-t1", _
Operator:=xlAnd, Criteria2:="<=-t2"
End With
'Copy the filtered data.
Range("A1:C1", ActiveCell.End(xlDown)).SpecialCells(xlCellTypeVisible).Copy
'Paste filtered dataset to the Output Sheet
Sheets(4).Range("A1").PasteSpecial
Sheets(3).AutoFilterMode = False
`
`
ありがとう、私はそれを昨日修正しました。しかし、以下の構文を使用しました。 .Range( "A1:C1")オートフィルタフィールド:= 2、Criteria1:= "> = - "&t1 _ オペレータ:= xlAnd、Criteria2:= " = - "&t2 – Imtiaz
@Imtiazこれは私のバージョンと同じ文字列になります。私は常に明示的な型変換をしようとします。 – Eugene