VBA Laufzeitfehler 91
Hallo,
benötige mal wieder Eure Hilfe um einen Fehler zu beseitigen der in Excel 2007 angezeigt wird, Excel 2000 funktioniert alles.
Es wird ein Begriff einer ListBox (UserForm) in der Tabelle gesucht und dann die Ergebnisse von TextBox, ComboBox (UserForm) in die Tabelle (aZelle.Offset ) eingetragen.
Der Fehler wird hier angezeigt: aZelle.Offset(0, 5) = TextBox2.Value
Laufzeitfehler91: Objektvariable oder with-Blockvariable nicht festgelegt.
Ich hoffe Ihr findet eine Lösung dazu.
Gruß
fedjo
fBegriff = ListBox3.Value
fBegriff = ListBox4.Value
Set aZelle = Sheets("Allgemein").Range("D4:D" & Range("D65536").End(xlUp).Row) _
.Find(fBegriff, lookat:=xlWhole) 'Tabelle1, Spalte 1 Eintrag wird überprüft
Frage = MsgBox("Wollen Sie die wirklich die Kolbenstangen einlagern oder die Stückzahl ändern.", _
vbYesNo + vbExclamation, "Achtuung")
If Frage = vbYes Then
aZelle.Offset(0, 5) = TextBox2.Value 'Änderung eintragen
aZelle.Offset(0, 2) = ComboBox5.Value
Antwort schreiben
Antwort 1 von Hajo_Zi vom 14.09.2022, 19:45 Options
Hallo Fedjo,
was sofort auffällt bei Range("D65536") fehlt die Tabelle, vielleicht solltest Du mit With arbeiten?
Gruß Hajo
Antwort 2 von nighty vom 14.09.2022, 19:45 Options
hi fedjo :-)
If aZelle Is Nothing Then
'kein fund
Else
'fund
End If
gruss nighty
Antwort 3 von nighty vom 15.09.2022, 08:15 Options
hi fedjo :-)
vielleicht etwas in der art :-))
gruss nighty
With Worksheets("Allgemein")
fBegriff = ListBox4.Value
Set aZelle = .Range("D4:D" & .Range("D" & Rows.Count).End(xlUp).Row).Find(fBegriff, lookat:=xlWhole)
If aZelle Is Nothing Then
MsgBox ("Keibe Daten gefunden")
Else
If MsgBox("Wollen Sie die wirklich die Kolbenstangen einlagern oder die Stückzahl ändern.", _
vbYesNo + vbExclamation, "Achtuung") = vbYes Then
aZelle.Offset(0, 5) = TextBox2.Value
aZelle.Offset(0, 2) = ComboBox5.Value
End If
End If
End With
Antwort 4 von Beverly vom 15.09.2022, 08:26 Options
Hi,
in deinem Code fehlt vor Rows.Count der Punkt (.) - das führt unter bestimmten Bedingungen zum Laufzeitfehler.
Bis später,
Beverly
Antwort 5 von nighty vom 15.09.2022, 08:41 Options
hi Beverly :-)
sehr aufmerksam,danke :-))
gruss nighty
Antwort 6 von fedjo vom 15.09.2022, 18:13 Options
Hallo,
@ Hajo,
habe den Code mit der Tabelle ergänzt, gleiche Fehlermeldung.
Wie sieht der Code mit "With" aus?
@ nighty,
habe dein Makro etwas verändert, das jetzt so funktioniert.
Die If Abfrage nach dem Fund ist nicht nötig, weil der Begriff immer vorhanden ist.
fBegriff =
ListBox4.Value
Set aZelle = Sheets("Allgemein").Range("D4:D" & Sheets("Allgemein").Range("D" & Rows.Count).End(xlUp).Row).Find(fBegriff, lookat:=xlWhole)
If MsgBox("Wollen Sie die wirklich die Kolbenstangen einlagern oder die Stückzahl ändern.", _
vbYesNo + vbExclamation, "Achtuung") = vbYes Then
aZelle.Offset(0, 5) = TextBox2.Value 'Änderung eintratgen
aZelle.Offset(0, 2) = ComboBox5.Value
End If
Danke an alle für eure Hilfe.
Gruß
fedjo
Antwort 7 von Beverly vom 15.09.2022, 20:32 OptionsLösung
Hi Fedjo,
auch auf deinen Code trifft das zu, was ich bereits in meinem vorhergehenden Beitrag angemerkt habe: es fehlt etwas, aber in diesem Fall ist es Tabellenblatt. Einfacher ist es aber auf jeden Fall mit With - wie Hajo schon geschrieben hat
With Sheets("Allgemein")
Set aZelle = .Range("D4:D" & .Range("D" & _
.Rows.Count).End(xlUp).Row).Find(fBegriff, lookat:=xlWhole)
End With
Bis später,
Karin
Antwort 8 von fedjo vom 16.09.2022, 18:19 Options
Hallo Karin,
mit With funktioniert prima, werde deinen Code verwenden.
Danke noch mal für deine Unterstützung.
Gruß
fedjo