Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
508to512
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
508to512
508to512
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehlerbehandlung

Fehlerbehandlung
28.10.2004 19:53:26
Bergelmir
Hallo,
ich möchte überprüfen, ob eine Tabelle vorhanden ist.
Wenn ja dann soll die Tabelle anzeigt werden.
Andernfalls soll die Tabelle erstellt werden.
Meine Frage ist daher, ob es ein Befehl gibt der prüft ob die Tabelle existiert.
(bzw. das Objekt x wenn es nicht um ein Worksheet sondern um ein anderes Objekt geht)
In etwa:
if exist(worksheets("meineTabelle")) then ...
Ich konnte darüber leider nichts finden.
Meine Lösung daher wie folgt:
--------------
Option Explicit
---

Sub test()
Const Tabellenname As String = "meineTabelle"
Dim Tabellenblatt As Worksheet
On Error Resume Next
Worksheets(Tabellenname).Activate
If Err.Number = 9 Then
Set Tabellenblatt = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Tabellenblatt.Name = Tabellenname
Tabellenblatt.Activate
End If
On Error GoTo 0
End Sub

Eine Lösung wie oben würde mir jedoch besser gefallen.
Finde ich einfach lesbarer.
Eventuell gibt es ja doch eine Lösung.
Gruß Bergelmir

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlerbehandlung
Reinhard
Hi Bergelmir,

Sub test()
Dim Tabellenname As String, vorh As Boolean
Dim Tabellenblatt
Tabellenname = "MeineTabelle"
For n = 1 To Worksheets.Count
If Worksheets(n).Name = Tabellenname Then vorh = True
Next n
If vorh = False Then
Set Tabellenblatt = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Tabellenblatt.Name = Tabellenname
End If
End Sub

Gruß
Reinhard
AW: Fehlerbehandlung
28.10.2004 20:37:33
Bergelmir
Hallo Reinhard
Die Lösung gefällt mir ja noch besser.
Dann muss man nicht in die Standardfehlerroutine eingreifen.
Lesbarer wird das Ganze dennoch nicht.
So eine 'eine Zeile'-Lösung würde mir besser gefallen.
Das lässt sich warscheinlich nur so lösen indem ich das
ganze in eine Funktion auslagern.
Dennoch Danke
Bergelmir
Anzeige
AW: Fehlerbehandlung
PeterW
Hallo Reinhard,
warum lässt du die Schleife über alle Blätter laufen und steigst bei gefunden nicht aus der Schleife aus?
For n = 1 To Worksheets.Count
If Worksheets(n).Name = Tabellenname Then
vorh = True
Exit For
End If
Next n
Das mag in Abhängigkeit der Anzahl der Blätter zwar nicht viel ausmachen aber kombiniert mit weiteren unnötigen Schleifendurchläufen summiert sich Laufzeit auch auf. :-)
Gruß
Peter
AW: Fehlerbehandlung
Reinhard
Hallo Peter,
weil das dem EVA-Prinzip widerspricht*g, (kein Exit, kein Goto) gilt das heutzutage nicht mehr?
Klar, wird das dadurch schneller:-)
Gruß
Reinhard
Anzeige
AW: Fehlerbehandlung
PeterW
Hallo Reinhard,
dann sollte das Problem anders gelöst werden - unötige Laufzeiten sind sicher NICHT Standard des EVA-Prinzipes, das mir im Moment nichts sagt. ;-) Ein Exit For oder Exit Do lässt sich im Code noch leicht überblicken; über die Sinnlosigkeit von GoTo dürfte Einigkeit bestehen.
Gruß
Peter
AW: Fehlerbehandlung
Reinhard
Hallo Peter,
gabs mal vor 30 jahren, Eingabe Verarbeitung Ausgabe auch in Programmblöcken, also ohne die Verarbeitung abzukürzen durch goto, exit.
Gab damals Punktabzg in meinen winzigen Basicprogrammen, auf nem ZX81 :-)
Gruß
Reinhard
AW: Fehlerbehandlung
Udo
Vor 30 jahren hat man auch überall Asbest eingebaut, bis man gemerkt hat, dass das
krebserregend ist.
Udo
Anzeige
AW: Fehlerbehandlung
Udo
Wenn du das mit dem Error nicht willst, kannst du nur alle Blätter mit einer Schleife abklappern.
Udo
AW: Fehlerbehandlung
28.10.2004 20:30:40
Bergelmir
Das habe ich befürchtet.
Naja nicht so schlimm.
Hatte nur gehofft das ich das ganze vereinfachen könnte.
Werde mir mal bei Gelegenheit eine Funktion schreiben müssen.
Trotzdem Danke
Bergelmir
AW: Fehlerbehandlung
Uduuh
Hallo,
noch ne schmutzige Methode:

Sub test()
Const Tabellenname As String = "meineTabelle"
Dim Tabellenblatt As Worksheet
on error resume next
set tabellenblatt=worksheets(tabellenname)
if tabellenblatt is nothing then
Set Tabellenblatt = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Tabellenblatt.Name = Tabellenname
Tabellenblatt.Activate
End If
On Error Goto 0
End Sub

Gruß aus'm Pott
Udo

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige