Excel VBA: instruction on Error Goto ne fonctionne pas à l'intérieur De la Boucle

Je suis en train de passer à travers un tableau dans excel. Les trois premières colonnes de ce tableau, le texte des titres, le reste d'entre eux ont des dates pour les en-têtes. Je veux attribuer ces dates, de manière séquentielle, à une variable de type Date, puis effectuer quelques opérations sur la base de la date

Pour ce faire, je suis l'aide d'une boucle foreach sur myTable.ListColumns. Depuis les trois premières colonnes n'ont pas d'en-têtes de date, j'ai essayé de mettre la boucle de sorte que, si il y a une erreur de l'affectation de la chaîne d'en-tête de la variable de type date, la boucle va directement à la colonne suivante

Cela semble fonctionner pour la première colonne. Cependant, lors de la deuxième colonne d'en-tête est "attribuées" à la variable de type date, la macro rencontre une erreur, même si il est à moins d'une erreur de manipulation bloc

Dim myCol As ListColumn
For Each myCol In myTable.ListColumns
    On Error GoTo NextCol

    Dim myDate As Date
    myDate = CDate(myCol.Name)

    On Error GoTo 0

    'MORE CODE HERE

NextCol:
    On Error GoTo 0
Next myCol

Pour rappel, l'erreur est levée sur le second tour de la boucle, à la déclaration

myDate = CDate(myCol.Name)

Quelqu'un peut-il expliquer pourquoi l'instruction on Error arrêts de travail?

Plutôt que d'utiliser une erreur que votre structure de contrôle, peut-être un SI avec une fonction IsDate serait plus approprié dans ce scénario?
Si vous êtes "à l'aveugle" de la manipulation de l'erreur plutôt que de prendre une action spécifique sur une erreur de type, vous devez simplement utiliser une On Error Resume Next à l'extérieur de votre boucle. Au moment où vous l'utilisez erreur de manipulation de nouveau sur chaque colonne.
Je ne pense pas que vous pouvez simplement reprendre prochaine. L'idée est de passer sur le "plus de code ici" code si la date de conversion échoue. Vous devez donc vous rendre dans un gestionnaire de sorte que vous pouvez reprendre à une ligne spécifique. En outre, vous ne voulez que le gestionnaire activé pour la date de conversion, et non pas l'ensemble du corps de boucle.
À la réflexion, je suis d'accord. Je voudrais voir "plus d'un code ici".

OriginalL'auteur Swiftslide | 2012-08-17