VBA filtre automatique Avec Plusieurs Critères à l'Aide de Variables
EDIT: Pour résoudre le problème, j'ai changé Dim Placed As Range
à As Long
. J'ai ensuite changé
Set Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight)
à
Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight).Column
Le code fonctionne très bien maintenant.
FIN MODIFIER
Ok, j'ai travaillé sur cette question pendant près de deux heures maintenant.
Je suis en train de coder un couple de boutons d'option sur une feuille de calcul pour filtrer les données en fonction des besoins.
Pour commencer, j'ai enregistré moi-même en filtrant les données pour me donner un point de départ. C'est ce que l'enregistreur de cracher:
ActiveSheet.Range("$A$3:$CS$212").AutoFilter Field:=53, Criteria1:=Array( _
"Iteration 1", "Iteration 2", "Iteration 3", "Tradeshow", "="), Operator:= _
xlFilterValues
Pour faire les boutons d'option plus robuste, j'ai décidé d'utiliser des variables dans le cas de lignes ou de colonnes ont été ajoutées, ou si les critères ont été ajoutés.
J'ai ajouté une variable pour le Range()
, Field:=
, et Criteria1:=
, mais mon code génère cette erreur maintenant: Run-time error '1004': Autofilter Method of Range class failed
.
Je me demande si je suis en utilisant le Array
mal...? De toute façon, voici mes déclarations:
Const Opt1 As String = "Iteration 1"
Const Opt2 As String = "Iteration 2"
Const Opt3 As String = "Iteration 3"
Const Opt4 As String = "Iteration 4"
Const Opt5 As String = "Tradeshow"
Const Opt6 As String = "Placed"
Dim Placed As Range 'This is the Field var.
Dim lastRow, lastColumn As Long 'Holds the last row and column numbers.
Dim Rng1, Rng2 As Range 'These hold the beginning and ending ranges for the filter
Et voici comment je suis mes variables:
lastRow = Range("A:A").Find("*", Range("A1"), searchdirection:=xlPrevious).Row
lastColumn = Cells(3, Columns.Count).End(xlToLeft).Column
Set Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight)
Set Rng1 = Cells(3, 1)
Set Rng2 = Cells(lastRow, lastColumn)
Enfin, voici la AutoFilter
code:
ActiveSheet.Range(Rng1, Rng2).AutoFilter Field:=Placed, Criteria1:=Array(Opt1, Opt2, Opt3, Opt4, Opt5, Opt6, "="), Operator:=xlFilterValues
Personne ne voir pourquoi il pourrait être jeter cette erreur? A-t-elle quelque chose à voir avec la Array
? Toute aide sera très appréciée!
OriginalL'auteur ARich | 2013-08-08
Vous devez vous connecter pour publier un commentaire.
Non, c'est un problème avec le Champ:= paramètre. Vous l'avez configuré pour Placé, et vous avez affecté la Placé variable d'une cellule. Il doit être un numéro de colonne. Par exemple, si cette colonne est la colonne D et de vos données commencent à être dans la colonne A, le Champ doit être de 4, parce que c'est la quatrième colonne. Si la colonne est placé dans la dernière colonne, vous pouvez configurer le Champ égal à votre lastColumn variable:
Vous êtes les bienvenus 🙂 Parfois, lorsque nous regarder les choses trop longtemps, ce qui est évident choses se glisse juste derrière nous.
OriginalL'auteur tigeravatar