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

Laufzeitfehler mit Excel 2007

Laufzeitfehler mit Excel 2007
markus
Hallo zusammen,
Ich bekomme bei der Ausführung eines Makros im Excel 2007 zur Erstellung neuer Blätter einen Laufzeitfehler 13, Typen unverträglich. (mit Excel 2003 funktioniert es tadellos.)
Den Fehler zeigt es mir hier an und wenn ich die Zeilen ausschalte funktioniert es auch.
Danke und Gruß Markus
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If [L508] > 0 Then
MsgBox " Achtung!" & Chr(13) & Chr(13) & " Falsche Eingabe. " _
Hier mal das Makro:
Sub Blätter_erstellen()
Sheets("Vorgaben").Unprotect Password:="XXX"
Sheets("Mustermann_M").Unprotect Password:="XXX"
Dim Zelle As Range
With Sheets("Vorgaben")
On Error Resume Next
For Each Zelle In .Range(.Cells(9, 2), .Cells(107, 2).End(xlUp)).SpecialCells( _
xlCellTypeConstants)
Err = 0
Sheets(Zelle.Value).Select
Select Case Err
Case 0
Case Else
ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = Zelle.Value
ActiveSheet.Tab.ColorIndex = 10  ' = Grün
Sheets("Mustermann_M").Cells.Copy Destination:=ActiveSheet.Cells
Range("A7").Select
ActiveWindow.FreezePanes = True
Range("D8").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True,  _
Password:="XXX"
ActiveSheet.EnableSelection = xlUnlockedCells
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
End With
End Select
Next
On Error GoTo 0
Sheets("Mustermann_M").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True,  _
Password:="XXX"
.Select
End With
Application.DisplayAlerts = False
Sheets("Ende").Delete
Application.DisplayAlerts = True
Sheets("Vorgaben").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:= _
"XXX" 'neu
ActiveSheet.EnableSelection = xlUnlockedCells
Range("C2").Select
End Sub

AW: Laufzeitfehler mit Excel 2007
05.01.2011 09:46:05
Herbert
Hallo Markus,
nur mal zur Sicherheit gefragt: hast Du das AddIn "Analyse-Funktionen-VBA" aktiviert?
Gruß Herbert
AW: Laufzeitfehler mit Excel 2007
05.01.2011 10:18:45
Matthias
Hallo
Natürlich mal wieder schade das man zum Testen nachbauen muss :(
Du hast ja schließlich die Datei schon (fast) fertig.
Hättest sie also hier zur Verfügung stellen können/sollen.
noch eine paar Anmerkungen:
Wenn das Makro Blätter_erstellen() ein zweites Mal gestartet wird, gibt es diesen VBA-Fehler
(da das Sheet("Ende") bereits gelöscht wurde.)
Desweiteren sollten Variablen deklariert werden.
Dim Zelle as (Typ)
und das versteh ich auch nicht:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If [L508] > 0 Then MsgBox " Achtung!" & Chr(13) & Chr(13) & " Falsche Eingabe. "
Bei Selection wird mE keine Eingabe gemacht


und wenn der Code tatsächlich so dasteht, wie gepostet
Zitat:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If [L508] > 0 Then
MsgBox " Achtung!" & Chr(13) & Chr(13) & " Falsche Eingabe. " _

da fehlt sowieso das End If und das End Sub
Ich konnte beim Test mit XL2007 den Laufzeitfehler
also nur erzeugen beim 2. Aufruf des Makros Blätter_erstellen(), da das Sheet("Ende")
bereits gelöscht wurde.
Gruß Matthias
Anzeige
AW: Laufzeitfehler mit Excel 2007
05.01.2011 12:23:33
markus
Hallo,
End If und End Sub ist natürlich gesetzt.
Diesen Fehler konnte ich beheben, da während der Makroausführug der Wert L 508 auf #NV gesetzt wurde.
Jetzt läft aber das andere Makro zum Blätter erstellen nicht mehr richtig.
Denn beim 2. ausführen werden die Blätter zum 2. mal erstellt, jdoch nicht umbenannt diese heißen dann
Tabelle1 bis ...
Dies sollte aber gerade nicht passieren und nur noch nicht vorhandene Blätter neu erstellen.
Hat jemand eine Lösung?
Danke Gruß Markus
AW: Laufzeitfehler mit Excel 2007
05.01.2011 13:15:45
markus
Hallo, ich habe die Datei gerade auf einem anderem
PC mit Office 2007 ausprobiert und sie läuft problemlos.
Liegt das evtl. an Einstellungen?
Die Excel-Optionen im Vertrauenscenter sind jedoch alle gleich eingestellt.
Gruß Markus
Anzeige
AW: Laufzeitfehler mit Excel 2007
09.01.2011 16:54:02
fcs
Hallo Markus,
es ist immer etwas problematisch beim Auftreten von Fehlern mit Resume Next zu arbeiten. Das kann zu unerwarteten Ergebnissen führen, wenn nicht einkalkulierte Fehler auftreten.
Besser ist es vor bestimmten Aktionen explizite Prüfungen (in deinem Fall, ob Blatt mit dem Namen bereits vorhanden ist) durchzuführen, statt fehlerabhängig weiter zu arbeiten. Fehler während der Makroausführung sollte man in einem separaten Abschnitt der Prozedur auswerten und ggf. gezielte Aktionen einleiten.
Nachfolgend mein Vorschlag für deine Prozedur inkl. einer Funktion zur Prüfung der Blattnamen.
Gruß
Franz
' Hier mal das Makro:
Sub Blätter_erstellen()
Dim Zelle As Range
On Error GoTo Fehler
Sheets("Vorgaben").Unprotect Password:="XXX"
Sheets("Mustermann_M").Unprotect Password:="XXX"
With Sheets("Vorgaben")
For Each Zelle In .Range(.Cells(9, 2), .Cells(107, 2).End(xlUp)).SpecialCells( _
xlCellTypeConstants)
If fncSheet_vorhanden(Zelle.Text) = False Then
ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = Zelle.Value
ActiveSheet.Tab.ColorIndex = 10  ' = Grün
Sheets("Mustermann_M").Cells.Copy Destination:=ActiveSheet.Cells
Range("A7").Select
ActiveWindow.FreezePanes = True
Range("D8").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
Password:="XXX"
ActiveSheet.EnableSelection = xlUnlockedCells
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
End With
End If
Next
Sheets("Mustermann_M").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
Password:="XXX"
.Select
End With
If fncSheet_vorhanden("Ende") = True Then
Application.DisplayAlerts = False
Sheets("Ende").Delete
Application.DisplayAlerts = True
End If
Sheets("Vorgaben").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
Password:="XXX" 'neu
ActiveSheet.EnableSelection = xlUnlockedCells
Range("C2").Select
Fehler:
With Err
Select Case .Number
Case 0
'do nothing alles ok
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub
Function fncSheet_vorhanden(sBlattname As String, Optional wb As Workbook) As Boolean
'Überprüft, ob ein Blatt im Workbook vorhanden ist
Dim oSheet As Object
If wb Is Nothing Then Set wb = ActiveWorkbook
For Each oSheet In wb.Sheets
If LCase(oSheet.Name) = LCase(sBlattname) Then
fncSheet_vorhanden = True
Exit For
End If
Next
End Function

Anzeige
AW: Laufzeitfehler mit Excel 2007
11.01.2011 09:32:26
markus
Hallo Franz,
Danke es läuft, am Ende erhalte ich "Fehler Nr.9 Index außerhalb des gültigen Bereichs"
Woran kann das liegen?
Mit Excel 2003 kommt kein Fehler aber im 2007er.
Danke noch mal und Gruß Markus
Welche Codezeile ist "am Ende"? o.w.T.
11.01.2011 13:35:49
Reinhard


AW: Welche Codezeile ist "am Ende"? o.w.T.
11.01.2011 20:32:05
markus
Der Code steht oben und ist von Franz.
Gruß Markus
AW: Welche Codezeile ist "am Ende"? o.w.T.
12.01.2011 00:36:06
fcs
Hallo Markus,
Fehler 9 betrifft meines wissens irgendetwas rund um Blätter/Sheets (beim Löschen, Einfügen oder umbenennen).
Warum der Fehler in einer Excel-Version auftritt und in der anderen nicht. ?keine Ahnung?
Füge vor der Zeile
Ende:

die Zeile

Err.Clear

ein.
ggf. Müsstest du mal in Excel2007 vor der Makroausführung einen Haltepunkt im Makro setzen und das Makro mit Taste F8 schrittweise weiter abarbeiten, um festzustellen, ob das Makro sauber die For-Next-Schleife abarbeitet (ohne Fehler). Dann sollte die vorgeschlagene Anpassung die irritierende Fehlermeldung unterdrücken.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige