Anzeige
Archiv - Navigation
580to584
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
580to584
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellenblatt namen prüfen (VBA) Fehlerbehandlung

Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 08:27:15
Mathias
Hallo Forum,
ich möchte in einem Modul eine Fehlerbehandlung durchführen, wo die Namen der einzelnen Tabellenbätter geprüft werden. Wenn die Namen falsch sind soll eine Fehlermeldung ausgegeben werden, ansonsten soll eine andere Prozedur gestartet werden.
die Lage sieht eigentlich so aus ich habe vier Tabellenblätter, diese werden per Querry aus einen anderen Programm mit Daten gefüllt. Die T.Blätter heissen zum Beispiel Termine, Material, Obligo und Daten. Sie könnten aber auch Bw, Bestell, Bericht und Auswertung heissen oder eine Kombination aus den Namen aber meistens heissen Sie so Termine, Material, Obligo und Daten.
Ich hab mal probiert, die Namen direkt setzen, ungefähr so.

Sub test ()
Tabelle1.Name = "Termine"
Tabelle2.Name = "Material"
Tabelle3.Name = "Obligo"
Tabelle4.Name = "Daten"
End Sub

Ich möchte dem User aber nur einen Hinweis geben, dass die Tabellennamen falsch sind und er sein Querry anpassen muss.
vielen Dank
Mathias

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 09:42:21
u_
Hallo,

Sub NamenTesten()
Dim arrTab(4), i As Integer, strMldg As String
arrTab(1) = "Termine"
arrTab(2) = "Material"
arrTab(3) = "Obligo"
arrTab(4) = "Daten"
For i = 1 To 4
If Sheets(i).Name <> arrTab(i) Then
strMldg = MsgBox("Name der Tabelle " & i & " ist falsch", vbOKOnly + vbCritical, "Fehler")
End If
Next i
End Sub


Sub TabNameSetzen()
Dim arrTab(4), i As Integer
arrTab(1) = "Termine"
arrTab(2) = "Material"
arrTab(3) = "Obligo"
arrTab(4) = "Daten"
For i = 1 To 4
Sheets(i).Name arrTab(i)
Next i
End Sub

Gruß
Anzeige
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 11:44:09
Mathias
Hallo U_ und Martin,
das Macro läuft, leider nicht ganz richtig, das liegt aber wohl an meiner Datei.
Durch das Query wurden ein Tabellenblatt1 und TB2 erzeugt mit folgenden Namen TB1 SAPBEXqueries und TB2 SAPBEXfilters, dies Tabellenbätter sind im Excel nicht zusehen, nur im VB Editor, wie bekomme ich das Problem denn gelöst.
Ansonsten ist das Macro Sub NamenTesten() und Sub TabNameSetzen() genau das welches ich gesucht habe.
vielen Dank schon mal im voraus
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 11:58:11
Martin
Hallo Mathias,
ich halte das nach wie vor für einen Irrweg, da diese Lösung jeweils eine Ad-hoc-Anpassung der Namen verlangt, und das ist doch völlig unnötig. Hast Du meinen Vorschlag getestet? Warum kannst Du ihn nicht anwenden?
Wenn Du auf Deiner "Lösung" beharrst, kann ich Dir leider nicht mehr weiterhelfen.
Gruß
Martin Beck
P.S. Die beiden Blätter kannst Du über FORMAT-BLATT einblenden, es sei denn, sie wurden mit VBA ausgeblendet (xlVeryHidden). Dann brauchst Du für's einblenden ein Makro.
Anzeige
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 09:59:09
Martin
Hallo Mathias,
die exakt gleiche Frage hast du 20 Minuten vorher in dem noch offenen Thread
https://www.herber.de/forum/archiv/580to584/t582653.htm
gestellt? Wieso eröffnest Du einen neuen Thread?
Zur Sache: M.E. ist Deines Herangehensweise ungeeignet. Sie setzt voraus, das dem Makro immer bekannt ist, was zulässige Tabellenblattnamen sind, und genau die Bedingung ist bei wechselnden Namen nicht erfüllt. Mach' doch eine richtige Fehlerbehandlung mit on error in Deinem eigentlichen Makro. Wenn in Deinem Makro ein Blatt angesprochen wird, das nicht existiert, gibt es den Laufzeitfehler 9. Das kann man abfangen, eine Meldung ausgeben und das Makro beenden.
Erstelle Dir mal eine Leere Datei, die nicht das Blatt "Tabelle2" enthält, und laß folgendes Makro laufen, dann siehst Du, was ich meine.

Sub Fehler_vermeiden()
On Error GoTo errorhandler
'hier käme jetzt Dein Code
Worksheets("Tabelle2").Range("A1").Copy Destination:=Worksheets("Tabelle1").Range("A1")
MsgBox Worksheets("Tabelle1").Range("A1")
errorhandler:
If Err.Number = 9 Then
MsgBox "Mindestens ein Tabellenblattname ist falsch, Query überprüfen"
Else
MsgBox "Es ist ein allgemeiner Fehler aufgetreten."
End If
End Sub

Gruß
Martin Beck
Anzeige
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 10:28:34
Mathias
Hallo ihr beiden,
herzlichen Dank für eure Hilfe, ich werde den Code gleich mal ausprobieren.
viele Grüsse
Mathias
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 12:45:26
Mathias
Hallo Martin,
deine Lösung ist ja wirklich besser :-). Ich den Code nicht verwendet, da ich das nicht verstanden hatte, kannst dus mirs bitte erklären? Wofür das steht
Worksheets("Tabelle2").Range("A1").Copy Destination:=Worksheets("Tabelle1").Range("A1")
MsgBox Worksheets("Tabelle1").Range("A1")
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 13:06:55
Mathias
Hallo Martin,
dein Macro funktioniert fast perfekt, bis auf eine Sache.
Ich bekomme immer die Meldung.
MsgBox "Mindestens ein Tabellenblattname ist falsch!!" & vbLf & "Bitte Query überprüfen!!!
egal ob ein TB angesprochen werden kann oder nicht.
Anzeige
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 14:54:42
Martin
Hallo Mathias,
aha. ;-)
Ich hatte folgenden Code vorgeschlagen:

Sub Fehler_vermeiden()
On Error GoTo errorhandler
'hier käme jetzt Dein Code
Worksheets("Tabelle2").Range("A1").Copy Destination:=Worksheets("Tabelle1").Range("A1")
MsgBox Worksheets("Tabelle1").Range("A1")
errorhandler:
If Err.Number = 9 Then
MsgBox "Mindestens ein Tabellenblattname ist falsch, Query überprüfen"
Else
MsgBox "Es ist ein allgemeiner Fehler aufgetreten."
End If
End Sub

Die beiden Zeilen
Worksheets("Tabelle2").Range("A1").Copy Destination:=Worksheets("Tabelle1").Range("A1")
MsgBox Worksheets("Tabelle1").Range("A1")
haben nur Beispielcharakter. Es soll halt irgendwas passieren mit Tabelle1 und Tabelle2 und Du solltest den Code in einer jungfräulichen Datei testen, die eben keine Tabelle2 enthält. Wenn du den Code anwenden willst, mußt Du die beiden Zeilen löschen und an deren Stelle Deinen Code hineinkopieren. Dann sieht das Ganze so aus:

Sub Fehler_vermeiden()
On Error GoTo errorhandler
'hier käme jetzt Dein Code
errorhandler:
If Err.Number = 9 Then
MsgBox "Mindestens ein Tabellenblattname ist falsch, Query überprüfen"
Else
MsgBox "Es ist ein allgemeiner Fehler aufgetreten."
End If
End Sub

Die Zeilen bedeuten folgendes:
On Error GoTo errorhandler
Wenn ein Laufzeitfehler auftritt, springe im Programm zur Stelle
errorhandler:
Dann läuft der Code ab da weiter. Zunächst wird geprüft, ob die Nummer des Laufzeitfehlers gleich 9 ist, da dies der Fehler ist der auftritt, wenn Du einen Tabellennamen "ansprichst" der nicht existiert. Wenn =9 dann erste Meldung, sonst 2. Meldung.
Zu Deiner Frage: Wenn ein Blattname nicht existiert, tritt der Laufzeitfehler auf, auch dann wenn die anderen Blattnamen korrekt sind. Soll das nicht so sein?
Es wäre vielleicht günstig, wenn Du mal den kompletten Code postest, den Du verwendest.
Gruß
Martin Beck
Anzeige
AW: Tabellenblatt namen prüfen (VBA) Fehlerbehandlung
10.03.2005 15:17:28
Mathias
Super Martin,
lag einfach daran, das ich die Beispielzeilen nichz gelöscht hatte, vielen Dank
schönes WE
Mathias

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige