Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1000to1004
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sprunganweisung

Sprunganweisung
18.08.2008 14:43:00
sylke
Hallo Zusammen!
Bei folgenden Marko habe ich das Problem, dass das Marko stoppt, wenn es die die Variable "marke" nicht findet. Wie kann ich die Anweisung ändern, so das die fehlende Marke übersprungen wird?

Sub copy_benmark_trend(orginal, marke, quelle, ziel)
Dim test As String
' In Excel-Report suchen und kopieren
Windows(quelle).Activate
Range("A1").Select
'Suchen
Cells.Find(What:=orginal).Activate
'Kopieren
ActiveCell.Offset(4, 1).Range("A1").Select
ActiveCell.Range("A1:A2").Select
Selection.Copy
' Excel für den Kunden
Windows(ziel).Activate
' Suchen - Hier liegt das Problem!!!
Application.Goto Reference:=marke
' Reinkopieren
ActiveCell.Offset(1, 1).Range("A1").Select
If IsEmpty(Selection) = True Then
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose: _
_
=False
End If
End Sub


Vielen Dank im Voraus
Sylke

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sprunganweisung
18.08.2008 15:07:00
Daniel
HI
vielleicht durch überspringen mit der On Error Goto-Funktion, wobei meiner Einschätung nach eine saubere
Programmierung (z.B. fehlen bei allen Übergabeparametern die Variablentypen) eine derartige Maßnahme überflüssig machen würde:

Sub copy_benmark_trend(orginal, marke, quelle, ziel)
Dim test As String
' In Excel-Report suchen und kopieren
Windows(quelle).Activate
Range("A1").Select
'Suchen
Cells.Find(What:=orginal).Activate
'Kopieren
ActiveCell.Offset(4, 1).Range("A1").Select
ActiveCell.Range("A1:A2").Select
Selection.Copy
' Excel für den Kunden
Windows(ziel).Activate
On Error Goto Weiter
' Suchen - Hier liegt das Problem!!!
Application.Goto Reference:=marke
on error goto 0
' Reinkopieren
ActiveCell.Offset(1, 1).Range("A1").Select
If IsEmpty(Selection) = True Then
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose: _
_
_
=False
End If
Weiter:
on error goto 0
End Sub


sicherlich wäre es besser, schon im aufrufenden Code den an "marke" übergebenen Wert zu prüfen und dieses Makro nur aufzurufen, wenn dort ein gültiger Wert vorhanden ist.
Fehlervermeidung sollte Priorität vor Fehlerbehandlung haben.
Gruß, Daniel

Anzeige
AW: Sprunganweisung
19.08.2008 10:01:01
sylke
Hallo Daniel!
Danke für Deine Antwort. Ich finde auch, dass "Goto"-Anweisungen nicht gerade eine "schöne Programmierung" sind.
Das Marko rufe ich mit
Call copy_benmark_trend("u_tt_1 by trend", "u_tt_1_by_trend", quelle, ziel)
auf. Wie kann ich im Aufruf checken, ob die Marke "u_tt_1_by_trend" in "ziel" vorhanden ist?
Viele Grüße
Sylke

AW: Sprunganweisung
19.08.2008 11:01:00
Daniel
Hi
im Prinzip müsstest du die NAMEN von Excel durchprüfen, ob es einen Namen mit der angegeben Bezeichnung gibt, das könnte dann so aussehen:

Sub test()
Dim n As Name
Dim Check As Boolean
Check = False
For Each n In Application.Names
If n.Name = "u_tt_1_by_trend" Then
Check = True
Exit For
End If
Next
If Check Then
Application.Goto reference:="u_tt_1_by_trend"
Else
MsgBox "Name nicht gefunden"
End If
End Sub


Da muss man halt abwägen, ob man doch nicht lieber die On Error Goto - Variante wählt.
hängt auch davon ab, welche weiteren Konsequenzen das Fehlen des Namens haben soll.
Gruß, Daniel

Anzeige
AW: Sprunganweisung
19.08.2008 11:29:53
sylke
Hallo Daniel!
Dankeschön für Deine Antwort, aber ich werde dann doch die Goto-Lösung nehmen, da das Kopieren im Nachhinein noch mal von einer Kollegin kontrolliert wird und es so auffällt, wenn etwas fehlt.
Die andere Lösung ist zwar wesentlich eleganter, aber auch aufwendiger.
Viele Grüße
Sylke

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige