Si la feuille n'existe pas, le créer (VBA Excel)
Je suis de l'importation de données à partir de Microsoft Access, la détection de l'erreur ne semble pas fonctionner. Si le code tente de créer une fiche qui existe déjà, à continuer et à définir la destinationsheet à la présente fiche. Des conseils wold être apprécié.
For ix = stWW To edWW
For modi = 0 To mdcnt - 1
On Error Resume Next
Sheets.Add(After:=Sheets(Sheets.Count)).Name = ix & " " & modvar(modi)
On Error GoTo 0
Set DestinationSheet = Worksheets(ix & " " & modvar(modi))
'strSQL2 = "SELECT 1302_Scan.* FROM 1302_Scan;"
strSQL = "SELECT " & ix & "_" & modvar(modi) & ".* FROM " & ix & "_" & modvar(modi) & ";"
'MsgBox strSQL & "|" & strSQL
DestinationSheet.Cells.Clear
utilisé plus haut dans le code, peut être à l'origine de l'erreur, à @sous2817 de la suggestion.
On Error GoTo continue
Do While Not IsNull(modvar(ii))
mdcnt = mdcnt + 1
ii = ii + 1
Loop
continue:
On Error GoTo 0
Vous devez vous connecter pour publier un commentaire.
Ce peut être un moment où l'usage contrôlé de on Error Resume Next est acceptable. Peut-être quelque chose comme:
cela suppose que ix & "" & modvar(modi) résout à un nom propre.
Un peu de contexte à ma réponse:
À la base, vous n'avez pas vraiment si la fiche existe ou pas, vous venez de soins qu'il existe. La création d'une feuille avec un nom de feuille va générer une erreur et ne pas créer de la nouvelle feuille (à cause de l'erreur). Alors, enveloppant la création, dans un "on error resume next" permettra de créer de la feuille, s'il n'existe pas et ignorez l'erreur si elle existe déjà. La ligne suivante (on error goto 0) active la vérification des erreurs d'arrière, de sorte que vous pouvez traiter correctement les erreurs qui peuvent survenir ultérieurement dans votre code.
Cela pourrait être une vieille question, et il ya beaucoup de bonnes et de travail de la réponse(tout autour de l'internet).
Mais je viens de tombé sur moi-même et pas de réponse, j'ai trouvé directement satisfait de mon style de programmation.
En fin de compte j'ai fini par re-création d'un try...catch...finally structure et je pense qu'il est très propre.
Donc pour les gens tombent sur ce problème et la recherche d'un generalzied et faciles à adopter la solution: