Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
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

Tabellenblätter löschen

Tabellenblätter löschen
26.07.2013 15:23:26
Flo
Liebe Excel-Gemeinde,
das hier ist mein erster Beitrag im Forum. Ich bin 26 Jahre alt und meine Kenntnisse in VBA beschränken sich im Wesentlichen auf den Recorder. Ich beschäftige mich erst seit gestern überhaupt mit VBA, da ich bisher meine Probleme immer mit Formeln lösen konnte.
Ich habe folgendes Problem: Ich möchte gerne alle Tabellenblätter in meiner Excelmappe löschen, wenn in der Zelle A1 der Bezug zu einer Formel fehlt (#BEZUG!). Ich habe nun einen Code zusammen gebastelt, der zwar keine Fehlermeldung ausspuckt, aber auch kein Ergebnis erzielt:
Sub Makro1()
Dim wks As Worksheet
For Each wks In Worksheets
If Cells(1, 1).Text = "#BEZUG!" Then
Application.DisplayAlerts = False
wks.Delete
Application.DisplayAlerts = True
End If
Next
End Sub
Sieht jemand meinen Fehler? Vielen Dank schon einmal! :)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA : Tabellenblätter löschen wenn in A1 #BEZUG !
26.07.2013 15:47:14
NoNet
Hallo Flo,
herzlich Willkommen hier im Forum und Glückwunsch zur Entscheidung, dass Du nun auch VBA lernen möchtest :-)
Die Fehlerwerte in Tabellenblätter werden intern mit einem Fehlercode gespeichert und im Tabellenblatt in der jeweiligen Landessprache der Anwendung angezeigt - in deutschsprachigen Excel-Versionen mit #BEZUG!.
Um diese Fehlerwerte per VBA auszuwerten darf man daher nicht die deutsche anzeige (also die Übersetzung) verwenden, sondern den internen Code. Dazu gibt es die Typenkonvertierungsfunktion CVERR() - das steht für "ConVertERRor()". Als Argument in der Klammer gibt man den Fehlercode ein bzw. die dazugehörige Excel-Fehler-Konstante - für den #BEZUG! Fehler ist das xlErrRef (also "Excel Fehler Reference" - die englische Übnersetzung für den BEZUGS-Fehler).
So sieht das dann im fertigen (etwas modifizierten) VBA-Code aus :
Sub LoeschenZelleA1_BEZUGsfehler()
Dim wks As Worksheet
Application.DisplayAlerts = False 'Keine Nachfrage beim Löschen des Blattes
For Each wks In Worksheets
If Application.CountIf(wks.Cells(1, 1), CVErr(xlErrRef)) Then
Application.DisplayAlerts = False
wks.Delete
Application.DisplayAlerts = True
End If
Next
Application.DisplayAlerts = True
End Sub
Viel Spaß noch beim VBA-Lernen mit Excel,
Gruß, NoNet
Hast Du Interesse, andere Excel-Begeisterte kennenzulernen ? - Dann komme zum
Exceltreffen 11.-13.10.2013 in Duisburg

http://www.exceltreffen.de/index.php?page=230
Anmeldungen sind noch bis 31.07.2013 möglich ! - Schau doch mal rein !

Anzeige
AW: VBA : Tabellenblätter löschen wenn in A1 #BEZUG !
26.07.2013 15:53:06
Flo
Da wäre ich wohl nie drauf gekommen.. Das ging sehr schnell und funktioniert! Vielen Dank!

@NoNet und @Flo Rückfrage
26.07.2013 16:31:06
Matze
Hallo ihr Beiden,
..angenommen nun steht dort ein #Bezug! in A1 und die "Berechnung" des Blattes in den ExcelOptionen
aud "manuell" gestellt, dann ist das Blatt verloren, sollte man aus Sicherheitsgründen das nicht vorher kontrollieren, ist nur so ein Gedanke von mir, den ich hier gerne noch als Lösung sehen würde.
Danke Matze

AW: Tabellenblätter löschen
26.07.2013 16:38:10
Hugo
Hallo,
die Variante von Nonet ist natürlich viel besser - aber Du warst schon auf dem richtigen Weg, denn mit der TEXT-Eigenschaft kannst Du sehr wohl den Fehler auslesen. Musst aber auch jeweils das wks ansprechen:
Sub Makro1()
Dim wks As Worksheet
For Each wks In Worksheets
If wks.Cells(1, 1).Text = "#BEZUG!" Then
Application.DisplayAlerts = False
wks.Delete
Application.DisplayAlerts = True
End If
Next
End Sub
Dann sollte dieser Code auch seine Dienst tun.
Gruß
Hugo

Anzeige
What about english speaking employees ?
26.07.2013 17:06:00
NoNet
Hallo Hugo,
so etwas Ähnliches hatte ich auch schon getestet - aber gleich mit der richtigen "internationalen" Lösung (CVErr(xlErrRef)), da möglicherweise ja auch anderssprachige XL-Versionen eingesetzt werden und die Anzeige dann #BEZUG! ist !
Danke aber für den korrigierenden Satz, dass man mit .TEXT sehr wohl den Fehlerwert vergleichen kann ;-)
Salut, NoNet

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige