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

Laufzeitfehler abfangen

Laufzeitfehler abfangen
andif
Hallo Leute,
brauche Hilfe bei der Überarbeitung meines Programms. Also, das Programm tut folgendes:
Wenn in der Hilfstabelle in Spalte E ein "ja" steht, kopiert er die Vorlage "leer" und benennt sie mit dem Namen aus Spalte C um.
Soweit ganz gut.
Existiert der Name schon als Tabellenblatt, gibt es jedoch einen Laufzeitfehler 1004. Darum "Resume Next".

Vorteil:
ES gibt keinen Laufzeitfehler und für neue Namen in der Hilfstabelle wird ein neues Blatt erstellt.
Nachteil:
Die Vorlage "leer" wird trotzdem vorher kopiert und erscheint in der Tabelle als "leer(2)" oder "leer(3)" usw.
Irgendeine Idee wie man es realisieren kann, dass kein Laufzeitfehler angezeigt wird und auch keine Kopie von leer, dafür aber für neue Namen ein Blatt erstellt wird?
Hier das Programm:

Sub TabellenblätterErstellen()
Dim x As Integer
Dim strName As String
Dim bytZeile As Byte
Dim strAmtsgericht As String
Dim strAktenzeichen As String
Dim strVorname As String
On Error Resume Next
Application.ScreenUpdating = False
For bytZeile = 2 To 100
Worksheets("Hilfstabelle").Select
Cells(bytZeile, 6).Select
strName = Cells(bytZeile, 3)
strVorname = Cells(bytZeile, 4)
strAktenzeichen = Cells(bytZeile, 2)
strAmtsgericht = Cells(bytZeile, 5)
If ActiveCell.Value = "ja" Then
x = Worksheets.Count
Sheets("leer").Select
Sheets("leer").Copy After:=Sheets(x)
Sheets(Worksheets.Count).Select
ActiveSheet.Unprotect
Sheets(Worksheets.Count).Name = Sheets("Hilfstabelle").Cells(bytZeile, 3).Value
Sheets(Worksheets.Count).Cells(2, 2) = strName
Sheets(Worksheets.Count).Cells(3, 2) = strVorname
Sheets(Worksheets.Count).Cells(4, 2) = strAktenzeichen
Sheets(Worksheets.Count).Cells(5, 2) = strAmtsgericht
ActiveSheet.Protect
End If
Next bytZeile
Application.ScreenUpdating = True
End Sub


Hab schon alles mögliche versucht, bis am Ende gar nichts mehr lief.
Bin für jede Hilfe dankbar.
Gruß
andi

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Laufzeitfehler abfangen
Ulf
Einfach zuvor eine Abfrage, ob das Blatt schon existiert.
Ulf
AW: Laufzeitfehler abfangen
andif
Danke Ulf,
Ich dachte eigentlich eher an: Wenn Laufzeitfehler 1004, dann Next bytZeile.
Aber meistens ist die einfache Lösung die beste (und leider auch die auf die ich nicht komme!!!)
andi
AW: Laufzeitfehler abfangen
Ulf
Fehler werden soweit es geht vermieden.
Ulf
AW: Laufzeitfehler abfangen
xXx
Hallo,
ungetestet, sollte aber klappen:

Sub TabellenblätterErstellen()
Dim x As Integer
Dim strName As String
Dim bytZeile As Byte
Dim strAmtsgericht As String
Dim strAktenzeichen As String
Dim strVorname As String
Dim bolShett As Boolean
On Error Resume Next
Application.ScreenUpdating = False
For bytZeile = 2 To 100
With Worksheets("Hilfstabelle")
strName = .Cells(bytZeile, 3)
strVorname = .Cells(bytZeile, 4)
strAktenzeichen = .Cells(bytZeile, 2)
strAmtsgericht = .Cells(bytZeile, 5)
If .Cells(bytZeile, 6) = "ja" Then
For x = 1 To Sheets.Count
If Sheets(x).Name = .Cells(bytZeile, 3) Then GoTo next_bytZeile
Next x
Sheets("leer").Copy After:=Sheets.Count
With ActiveSheet
.Unprotect
.Name = Sheets("Hilfstabelle").Cells(bytZeile, 3).Value
.Cells(2, 2) = strName
.Cells(3, 2) = strVorname
.Cells(4, 2) = strAktenzeichen
.Cells(5, 2) = strAmtsgericht
.Protect
End With
End If
End With
next_bytZeile:
Next bytZeile
Application.ScreenUpdating = True
End Sub

Gruß aus'm Pott
Udo
http://www.excelerator.de
Anzeige
AW: Laufzeitfehler abfangen
Ulf
Goto ist ja übelster Stil und das auch noch als Tipp hier im Forum?
Ulf
@Ulf
xXx
Manchmal mag ich's eben schnell und schmutzig.
Ja, ja, ich schäm mich. Gefällt dir das besser? War eigentlich meine erste Idee.

Sub TabellenblätterErstellen()
Dim x As Integer
Dim strName As String
Dim bytZeile As Byte
Dim strAmtsgericht As String
Dim strAktenzeichen As String
Dim strVorname As String
Dim bolSheet As Boolean
On Error Resume Next
Application.ScreenUpdating = False
For bytZeile = 2 To 100
With Worksheets("Hilfstabelle")
strName = .Cells(bytZeile, 3)
strVorname = .Cells(bytZeile, 4)
strAktenzeichen = .Cells(bytZeile, 2)
strAmtsgericht = .Cells(bytZeile, 5)
If .Cells(bytZeile, 6) = "ja" Then
bolSheet = False
For x = 1 To Sheets.Count
If Sheets(x).Name = .Cells(bytZeile, 3) Then
bolSheet = True
Exit For
End If
Next x
If bolSheet = False Then
Sheets("leer").Copy After:=Sheets.Count
With ActiveSheet
.Unprotect
.Name = Sheets("Hilfstabelle").Cells(bytZeile, 3).Value
.Cells(2, 2) = strName
.Cells(3, 2) = strVorname
.Cells(4, 2) = strAktenzeichen
.Cells(5, 2) = strAmtsgericht
.Protect
End With
End If
End If
End With
Next bytZeile
Application.ScreenUpdating = True
End Sub

Gruß aus'm Pott
Udo
http://www.excelerator.de
Anzeige
AW: @Ulf
Ulf
Geht doch...geht doch!
Ulf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige