Ich habe ein bisschen Probleme mit Fehlern in einer Schleife in VBA. Als erstes ist hier der Code, den ichFehlerbehandlung in MS Excel VBA
dl = 20
For dnme = 1 To 3
Select Case dnme
Case 1
drnme = kt + " 90"
nme = "door90"
drnme1 = nme
Case 2
drnme = kt + " dec"
nme = "door70" 'decorative glazed'
Case 3
drnme = kt + " gl"
nme = "door80" 'plain glazed'
End Select
On Error GoTo ErrorHandler
Set sh = Worksheets("kitchen doors").Shapes(drnme) 'This line here is where the problem is'
sh.Copy
ActiveSheet.Paste
Selection.ShapeRange.Name = nme
Selection.ShapeRange.Top = 50
Selection.ShapeRange.Left = dl
Selection.ShapeRange.Width = 150
Selection.ShapeRange.Height = 220
25
dl = dl + 160
Next dnme
Exit Sub
ErrorHandler:
GoTo 25
Das Problem bin mit, dass, wenn es versucht, die Form zugreifen zu können, ist die Form nicht immer vorhanden ist. Das erste Mal durch die Schleife, das ist in Ordnung. Es geht zum ErrorHandler und alles funktioniert gut. Das zweite Mal, wenn es durchläuft und die Form nicht finden kann, kommt es zu dem Fehlerfeld "End/Debug". Ich kann nicht herausfinden, warum es nicht einfach zum ErrorHandler geht. Irgendwelche Vorschläge?
Okay, das sieht aus wie es funktioniert - aber Sie erhöhen nur d1, wenn ResizeShape true zurückgibt, während ich es egal was erhöhen möchte - ist mir egal wenn die Form nicht existiert, dann überspringe ich sie einfach. Bitte beachte auch, dass dies nicht mein eigener Code ist - ich arbeite mit jemand anderem zusammen, also möchte ich nicht wirklich zu viel ändern. Ich möchte nur den schlechten Code beheben, den er ursprünglich dort eingefügt hat, damit er mit den Änderungen, die ich an der App vorgenommen habe, funktioniert. –
Ich denke, dass selbsterklärend ist .. Ersetzen Sie einfach Wenn ResizeShape (drnme, nme, d1) Dann d1 = d1 + 160 End If mit ResizeShape (drnme, nme, d1) d1 = d1 + 160 – Adarsha
In Ordnung - habe diesen Code mit nur wenigen Änderungen verwendet - ich brauche eigentlich keine Funktion, da er nichts zurückgeben muss, und da sind ein paar kleine Tippfehler drin (ich hasse es, wenn 1 und ls sind zusammen verwendet), aber insgesamt funktioniert dein Code großartig und beseitigt die Notwendigkeit für die schrecklichen gotos. Danke vielmals! –