Excel VBA: Sélectionnez Cas si ActiveCell comme “*string*”
Je suis en train de travailler sur une macro qui prend la valeur actuelle de la ActiveCell
et les changements que la valeur est basée sur une sélection de cas.
Cependant, je suis incapable de déterminer si le ActiveCell
contient une wild card de la chaîne. Je ne sais pas si ma syntaxe est correcte. Comment puis-je obtenir mon sélectionnez la case à cocher pour comparer?
Select Case ActiveCell.Value
Case ActiveCell.Value Like "*string*"
ActiveCell.Value = "contains string"
End Select
Je ne pense pas que vous utilisez les caractères génériques déclaration des tests comme ça dans un Select case bloquer. Essayez d'utiliser
remplacer le
Cette question a une réponse valable. Vous devriez être juste et de l'accepter. Et faire de même avec vous d'autres questions.
If... then... elseif...end if
au lieuremplacer le
Case ActiveCell.Value Like
avec Case Is Like
Cette question a une réponse valable. Vous devriez être juste et de l'accepter. Et faire de même avec vous d'autres questions.
OriginalL'auteur thedeepfield | 2013-08-23
Vous devez vous connecter pour publier un commentaire.
Il est possible d'utiliser des caractères génériques. Garder ces deux choses à l'esprit: tout d'Abord, la comparaison des chaînes expressions correspondent à un type de données Booléen (True/False); Deuxièmement, par la référence du développeur pour le Sélectionner...instruction du Cas, tout Cas de l'expression(s) doit être "implicitement convertible" pour le même type de données que celle de l'Sélectionnez Cas expression de test. Pour le démontrer, nous allons utiliser le code à partir de l'original post ci-dessus.
Si nous avons sélectionné une cellule contenant une chaîne de valeur en toute feuille de calcul, puis utilisé pour tester le type de données de ces deux expressions à l'aide de la propriété TypeName() de la fonction, on obtient la suite:
Comme vous pouvez le voir, Sélectionner...Cas ne fonctionnera pas ici, car les types de données ne sont pas implicitement le même (une petite exception pour ce serait le cas si la macro a été exécutée sur toutes les cellules dans une feuille de calcul qui contient le mot avec les valeurs "Vrai" ou "Faux", qui, Excel convertit automatiquement en Booléen).
La solution est en fait très simple. Il suffit de changer l'expression de test pour Vrai.
C'est essentiellement le même que l'écriture:
C'est surtout une question de préférence personnelle si vous l'utilisez Si...Alors ou Sélectionnez...Cas. Personnellement, j'aime bien le Choisir...Cas de construction en raison de la lisibilité du code, mais aussi pour d'autres prestations (telles que la possibilité de passer chaque Cas une liste d'expressions séparées par des virgules plutôt que d'utiliser un OU de l'exploitant, rendant le code plus concis).
OriginalL'auteur Nero057
Est comme ne peuvent pas être utilisés comme des opérateurs de comparaison dans une instruction select case en VBA.
Si possible, il serait préférable de remplacer dans une instruction if-then:
De l'VBA glossaire à l'intention des opérateurs de comparaison:
OriginalL'auteur Aaron Thomas