0
私は、ユーザーフォームからいくつかのフィルターを作成するためのプログラムを作成しています(しかし、多くのユーザーフォームがあります)。プログラムは次のように機能します。プログラム内の別のユーザーフォームを呼び出す
- コマンドボタンをクリックしてユーザーフォーム
- からいくつかのチェックボックスを選択して次
- と呼ばれる次のコードでフィルター負荷:
エクセルVBAコード
Sub Filtrarvar(ByVal j As Integer, ByVal k As Integer, _
ByVal col As Integer, ByVal Userf As String)
Dim Countercheck As Integer
Countercheck = 0
i = j
n = j
Dim Lista() As String
longitud = k - j
ReDim Lista(longitud)
Do While i <= k
If UserForm2.Controls("CheckBox" & i).Value = True Then
ContaTic = ContaTic + 1
End If
i = i + 1
Loop
If ContaTic = 0 Or ContaTic = longitud + 1 Then
Sheets("Aux_total").Range(Cells(1, 1), _
Cells(UltLinea, UltColumna)).AutoFilter Field:=col, Criteria1:="<>"
ElseIf ContaTic >= 1 Then
arr = 0
Do While n <= k
If UserForm2.Controls("CheckBox" & n).Value = True Then
Value = UserForm2.Controls("CheckBox" & n).Caption
Lista(arr) = Value
arr = arr + 1
End If
n = n + 1
Loop
Sheets("Aux_total").Range(Cells(1, 1), _
Cells(UltLinea, UltColumna)).AutoFilter Field:=col, Criteria1:=Lista, _
Operator:=xlFilterValues
End If
End Sub
そして、このプログラムをこの:私が知りたいのですがどのような
Filtrarvar 1, 6, 4, "Europe"
は等々、ヨーロッパにUserForm2
からコードを変更する方法ですと?私はUserForm/Continentごとにそれをしたいと思います。
1.)ビルド1フォーム。 2)あなたの例で "ヨーロッパ"が示すようなものを与えます( 'Enum'の使用を検討してください)。 3.) '.Show'する前に、渡されたプロパティ値に基づいて実行時にフォームを設定します。 4.)[デフォルトインスタンスを使用する代わりにハードインスタンスを生成する](http://stackoverflow.com/documentation/vba/5351/user-forms/19036/best-practices#t=201611212133242937607)。 – Comintern