Concaténer des Variables de Chaîne pour être Réglé sur une Plage en VBA
Je vais avoir un problème avec une ligne de code:
ActiveSheet.Range("A" & rowCount & ":" & Mid(alphabet, totHdrLngth, 1) & belowRowCount)
Où l'alphabet est une chaîne de caractères contenant des lettres majuscules de A à Z.
Je reçois l'erreur suivante:
Run-time error '5':
Invalid Procedure call or argument
J'ai essayé de créer une Chaîne "inRange" et modifiant le code de cette fonction:
inRange = "A" & rowCount & ":" & Mid(alphabet, totHdrLngth, 1) & belowRowCount
curRange = ActiveSheet.Range(inRange)
Mais qui n'a pas aidé (comme je l'ai pensé qu'il ne serait pas). Des suggestions?
- Pourriez-vous utiliser
Debug.Print inRange
pour obtenir la valeur de inRange dans la fenêtre de débogage (ctrl+g)? - Hmm.. pas de voir quoi que ce soit dans la fenêtre de débogage. L'exécution de mon curseur sur "inRange" en mode debug et dit que la chaîne est vide (inRange = "")
- Je veux juste savoir comment la gamme de chaîne, lorsque vous appelez gamme, vous pourriez peut-être MsgBox ou quelque chose.
- inRange imprime sous vide (rien ne s'affiche)
inRange = "A" & rowCount & ":" & Mid(alphabet, totHdrLngth, 1) & belowRowCount
est égal à rien?!- Quelles sont les valeurs de nombre de lignes, totHdrLngth, et belowRowCount pour l'instance lorsque vous obtenez le message d'erreur?
- Je serais prêt à parier que le problème est à l'intérieur de la
Mid(alphabet, totHdrLngth, 1)
code... comme @cularis suggéré, essayez d'imprimer le résultat de cette instruction spécifique pour voir si elle est VRAIMENT de retour seulement une lettre majuscule. - totHdrLngth la valeur est égale à zéro, c'est le problème... mais il ne devrait pas être de zéro, puisque j'ai défini égal à 10 dans une autre sous. C'est un Mondial.
- Poste le code de sous et n'importe où vous êtes à la modification de la variable. Avez-vous l'étape à travers l'ensemble de votre code?
- J'ai effectivement corrigé cette erreur, mais la gamme est toujours pas sélectionné. Je me donne l'erreur sur la ligne ci-dessous: "code" erreur d'Exécution '91': Objet vairable ou variable bloc with non définie
- Lorsque vous affectez une valeur à une variable de type <tout objet>, vous devez utiliser le mot clé Set. De sorte que curRange affectation dirait qu'il en a besoin. Sans elle, vous obtiendrez le message d'erreur "Objet ou variable de Bloc with" erreur de vous décrire.
- maintenant que vous l'avez résolu le
totHdrLngth
problème, il suffit de revenir à la première déclaration que vous aviez.
Vous devez vous connecter pour publier un commentaire.
Bien que la création s'étend comme c'est mal vu en général, la façon de le faire est avec le mot DÉFINI (comme @Gary McGill indiqué dans les commentaires). Voici un exemple de comment faire cela:
Vous exécutez cette macro dans la gamme actuelle, il n'y a pas besoin de spécifier ActiveSheet.Gamme. J'espère que cela vous aide à obtenir vous vers ce que vous essayez d'atteindre.
Aussi loin que je peux dire, vous obtenez une erreur parce que votre types ne correspondent pas. J'imagine le nombre de lignes est un entier, comme c'est belowRowCount. Si vous les convertir en chaînes avant de les concaténer, vous pouvez le fixer. str() permet de convertir un entier en une chaîne de caractères avec un espace devant lui, et LTrim() permet de supprimer l'espace. Essayez de code comme ci-dessous:
et plus tard
Espère que cette aide.