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

Fehlermeldung bei Makro

Fehlermeldung bei Makro
01.10.2015 09:49:58
Imran
Hallo,
ich hatte vor ca. einer Woche schon einmal hier im Forum nachgefragt, ob mir jemand bei einem Code helfen könnte, der es mit ermöglicht, durch einen Makroklick, einen neuen Eintrag in einer Liste anzulegen. Leider hab ich irgendwann keine Antworten mehr bekommen :/ Hoffe ihr könnt mir hier noch weiterhelfen.
Das ist der Code, den ich bekommen hatte:
Option Explicit

Sub Main()
Dim lngLastRow As Long
Dim strTMP As String
On Error GoTo Fin
With Tabelle1
lngLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
strTMP = Split(Split(.Cells(lngLastRow, 2).Value, "(")(1), ")")(0)
If Left(strTMP, 2) = "00" Then
strTMP = "00" & strTMP + 1
ElseIf Left(strTMP, 1) = 0 Then
strTMP = "0" & strTMP + 1
Else
strTMP = strTMP + 1
End If
If Len(strTMP) > 3 Then strTMP = Right(strTMP, 3)
.Cells(lngLastRow + 1, 2).Value = "(" & strTMP & ")_ "
Application.Goto .Cells(lngLastRow + 1, 2), True
SendKeys "{F2}"
End With
Fin:
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub

Wenn ich ihn ausführe, bekomm ich den Fehler:
"Error:9 Index außerhalb des gültigen Bereichs."
Kann mir jemand erklären,was es damit auf sich hat ?
Vielen Dank !

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlermeldung bei Makro
01.10.2015 09:59:57
ChrisL
Hi
Wenn in Spalte B der letzte Wert nicht den Anforderungen entspricht d.h.
... Klammer Zahl Klammer ...
z.B. Text (1) Text
dann läuft das Programm auf einen Fehler.
cu
Chris

AW: Fehlermeldung bei Makro
01.10.2015 10:04:00
Imran
Oh entschuldige, das hätte ich vielleicht noch dazu schreiben sollen.
Meine Spalte B besteht aus "(580)" Zahlen und dann noch andere Einträgen danach, wie zum Beispiel "Schraube xy".
Und das Makro soll unter genau den letzten "Zahl (xx)" Eintrag einen neuen Eintrag mit der nächst größeren Nummer hinzufügen.

AW: Fehlermeldung bei Makro
01.10.2015 10:10:49
ChrisL

Sub Main()
Dim lngLastRow As Long
Dim strTMP As String
Dim i As Long
On Error GoTo Fin
With Tabelle1
lngLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
For i = lngLastRow To 1 Step -1
If InStr(1, .Cells(i, 2), "(")  0 Then Exit For
Next i
i = i + 1
.Rows(i).Insert
lngLastRow = i - 1
strTMP = Split(Split(.Cells(lngLastRow, 2).Value, "(")(1), ")")(0)
If Left(strTMP, 2) = "00" Then
strTMP = "00" & strTMP + 1
ElseIf Left(strTMP, 1) = 0 Then
strTMP = "0" & strTMP + 1
Else
strTMP = strTMP + 1
End If
If Len(strTMP) > 3 Then strTMP = Right(strTMP, 3)
.Cells(lngLastRow + 1, 2).Value = "(" & strTMP & ")_ "
Application.Goto .Cells(lngLastRow + 1, 2), True
SendKeys "{F2}"
End With
Fin:
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub

Anzeige
AW: Fehlermeldung bei Makro
01.10.2015 10:25:21
Imran
Danke !
An sich funktioniert der Code, nur ich bekomme den Fehler "Error: 13 Typen unveränderlich".
Und trotzdem wird nur eine Leere Zeile eingefügt, und nicht "(nächsteZahl)_".
Tut mir Leid, wenn ich ein wenig nerve, aber ich hab echt kaum Ahnung. Aus dem Grund bin ich dir SEHR dankbar für deine Hilfe !

AW: Fehlermeldung bei Makro
01.10.2015 10:46:33
ChrisL
Ist OK, aber wird Zeit für eine Beispieldatei...

AW: Fehlermeldung bei Makro
01.10.2015 12:44:41
ChrisL
Mit dieser Beispieldatei funktioniert der Code. Kann den Fehler leider nicht nachvollziehen.

Anzeige
AW: Fehlermeldung bei Makro
01.10.2015 14:34:16
Imran
Stimmt, auf der Beispieldatei funktioniert es...ich kann mir aber nicht erklären, woran es liegen könnte. Meine Hauptdatei hat viel mehr Spalten, aber daran kann es ja nicht liegen. Er nutzt ja die richtige Spalte, aber setzt eine leere Zeile, und zeigt dern Error 13 an..

AW: Fehlermeldung bei Makro
01.10.2015 17:27:53
ChrisL
Kann es sein, dass du eine Klammer hast, wo keine Zahl sondern Text drin steht?

AW: Fehlermeldung bei Makro
02.10.2015 10:58:52
Imran
Genau das ist es ! Ich habe unter der letzten Zahl, drei Platzhalter (XXX),(YYY),(ZZZ) reserviert, in die ich Preise eintrage. Kann man die irgendwie umgehen, oder soll ich sie löschen bzw mir etwas anderes einfallen lassen ?

Anzeige
AW: Fehlermeldung bei Makro
02.10.2015 11:08:23
Imran
Wenn ich sie lösche, dann funktioniert der Code !
Kann ich sie, aber trotzdem umgehen ?
ZB über Codezeilen, die explizit (XXX),(YYY),(ZZZ) ausschließen ?

AW: Fehlermeldung bei Makro
02.10.2015 11:29:59
Imran
Ok, ich hab sie einfach in eckige Klammern gesetzt !
Das funktioniert jetzt genau so, wie ich es mir vorgestellt habe !
Nur eine Sache noch !
Wenn ich das Makro ausführe, bekomme ich den
"Lauftzeitfehler '1004': Die Methode 'Undo' für das Objekt '_Application' ist fehlgeschlagen."
Das kann ich aber einfach beenden, ohne es zu debuggen, und dann funktioniert das Makro ganz normal.
Außerdem tritt der Fehler "Laufzeitfehler '424': Objekt erforderlich" auf, wenn ich manuell eine neue zeile einfüge. Auch das kann ich beenden und danach normal ausführen.
Hier werde ich auf "AlterWert = target.Value" im Code hingewiesen.
Wenn ich debugge, weißt der auf meinen Code in der Arbeitsmappe hin. Ich habe mir ein Protokoll erstellt, der alle Änderungen aufnimmt.
Das ist der Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ErsteFreieZeile As Long
Dim AlterWert As Variant, NeuerWert As Variant
Dim rngNeuSel As Range
If Sh.Name = "Protokoll" Then Exit Sub
If Intersect(Target, Sh.Range("A1:AN2000")) Is Nothing Then Exit Sub
'Ereignisbehandlung ausschalten:
Application.EnableEvents = False
'Zwischenspeichern des neuen Wertes und der neuen Zellmarkierung
NeuerWert = Target.Value
Set rngNeuSel = Selection
'Rückgängigmachen der letzten Aktion (=Zellwertänderung und Zellmarkierung):
Application.Undo '

Anzeige
AW: Fehlermeldung bei Makro
02.10.2015 13:58:34
ChrisL
Hi
Mach bitte einen neuen Beitrag. Gleich vorweg: Ohne aussagekräftige Beispieldatei wird sich auch hier kaum etwas machen lassen bzw. macht es keinen Spass sich anhand eines Codes ein Dateibeispiel zusammen zu reimen, das dann vielleicht doch nicht stimmt.
cu
Chris

AW: Fehlermeldung bei Makro
02.10.2015 13:47:28
ChrisL
Ich glaube so müsste es gehen:
Sub Main()
Dim lngLastRow As Long
Dim strTMP As String
Dim i As Long
On Error GoTo Fin
With Tabelle1
lngLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
For i = lngLastRow To 1 Step -1
If InStr(1, .Cells(i, 2), "(")  0 And _
IsNumeric(Mid(.Cells(i, 2), InStr(1, .Cells(i, 2), "(") + 1, 1)) Then Exit For
Next i
i = i + 1
.Rows(i).Insert
lngLastRow = i - 1
strTMP = Split(Split(.Cells(lngLastRow, 2).Value, "(")(1), ")")(0)
If Left(strTMP, 2) = "00" Then
strTMP = "00" & strTMP + 1
ElseIf Left(strTMP, 1) = 0 Then
strTMP = "0" & strTMP + 1
Else
strTMP = strTMP + 1
End If
If Len(strTMP) > 3 Then strTMP = Right(strTMP, 3)
.Cells(lngLastRow + 1, 2).Value = "(" & strTMP & ")_ "
Application.Goto .Cells(lngLastRow + 1, 2), True
SendKeys "{F2}"
End With
Fin:
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub

Anzeige
AW: Fehlermeldung bei Makro
01.10.2015 17:37:08
Daniel
Hi
wenns in der Beispieldatei funktioniert, dann solltest du überprüfen, wie sich die Beispieldatei von der Originaldatei unterscheidet.
des weitern solltest du dir mal genauer anschauen, wo und wann genau der Fehler passiert und welchen Wert die Variablen dann haben.
sollte beispielsweise der Fehler nicht schon beim ersten schleifendurchlauf sondern erst beim 10. durchlauf passieren, dann muss man die Werte, die beim letzen funktionierenden Durchlauf verwendet wurden, mit denen vergleichen, bei denen der Fehler passiert ist.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige