Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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 91

Laufzeitfehler 91
16.11.2021 17:35:02
Florian
Hi Leute,
kann mr jemand sagen, warum ich diesen Fehler ausgespuckt bekomme?
Userbild
Hier mein Code:

Sub DatenuebernahmeQuelldatei()
Dim lngAktuelleZeile, lngZeilenBuchungen As Long
Dim wksBuchungenPruefen2021, wksQuelldaten As Worksheet
Dim intAktuelleZeile As Long
Dim strZuordnung As String
'Tabellenblatt Buchungen prüfen setzen
Set wksBuchungenPruefen2021 = ActiveWorkbook.Sheets("Buchungen prüfen 2021")
Set wksQuelldaten = ActiveWorkbook.Sheets("Quelldaten")
'Autofilter in Buchungen prüfen löschen
If wksBuchungenPruefen2021.FilterMode Then
wksBuchungenPruefen2021.ShowAllData
End If
'Autofilter in Quelldaten löschen
If wksQuelldaten.FilterMode Then
wksQuelldaten.ShowAllData
End If
'Anzahl der Buchungen in Buchungen prüfen ermitteln
lngZeilenBuchungen = wksBuchungenPruefen2021.Cells(Rows.Count, 1).End(xlUp).Row
For lngAktuelleZeile = 3 To lngZeilenBuchungen
With wksBuchungenPruefen2021
strZuordnung = _
.Cells(lngAktuelleZeile, 1).Value & _
.Cells(lngAktuelleZeile, 2).Value & _
.Cells(lngAktuelleZeile, 3).Value & _
.Cells(lngAktuelleZeile, 4).Value & _
.Cells(lngAktuelleZeile, 5).Value & _
.Cells(lngAktuelleZeile, 6).Value & _
.Cells(lngAktuelleZeile, 7).Value & _
.Cells(lngAktuelleZeile, 9).Value
End With
wksBuchungenPruefen2021.Cells(lngAktuelleZeile, 14).Value = wksQuelldaten.Columns(28).Find(What:=strZuordnung, LookIn:=xlValues).Offset(-15, 0).Value
Next lngAktuelleZeile
End Sub
Der Fehler tritt in dieser Zeile auf:

wksBuchungenPruefen2021.Cells(lngAktuelleZeile, 14).Value = wksQuelldaten.Columns(28).Find(What:=strZuordnung, LookIn:=xlValues).Offset(-15, 0).Value
Danke euch :)

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 91
16.11.2021 17:43:36
Hajo_Zi
Du greiftst in der Zeile auf unterschiedlich Tabellen zu.
GrußformelHomepage
In diesem Forum bekomme nur selten eine Mailbenachrichtigung, weitere Antworten sind zufällig.
AW: Laufzeitfehler 91
16.11.2021 17:45:52
{Boris}
Hi,
der Fehler bedeutet, dass die Find-Methode nicht fündig geworden ist - sie gibt also Nothing zurück - und Nothing hat keine Value-Eigenschaft - das führt dann genau zum Fehler.
Prüfe also vorher, ob was gefunden wurde - am Besten durch Zuweisung zu einer Objekt(Range)Variablen, und lies nur bei Treffer den Value aus.
VG, Boris
Anzeige
AW: Laufzeitfehler 91
16.11.2021 17:49:04
Nepumuk
Hallo Florian,
das passiert wenn Find nicht findet. Mach es so:

Dim objCell As Range
Set objCell = wksQuelldaten.Columns(28).Find(What:=strZuordnung, LookIn:=xlValues)
If Not objCell Is Nothing Then wksBuchungenPruefen2021.Cells(lngAktuelleZeile, 14).Value = objCell.Offset(-15, 0).Value
Gruß
Nepumuk
Anzeige
AW: Laufzeitfehler 91
17.11.2021 09:57:37
Florian
Eigentlich müsste was gefunden werden, denn den String, den ich suche, habe ich mit dem identischen Code und Werten aufgebaut.
Habe es jetzt mal so getestet:

wksBuchungenPruefen2021.Cells(lngAktuelleZeile, 14).Value = wksQuelldaten.Columns(29).Find(What:="1", LookIn:=xlValues).Offset(-15, 0).Value
Meine Tabelle schaut so aus:
Userbild
AW: Laufzeitfehler 91
17.11.2021 10:36:49
Nepumuk
Hallo Florian,
lade doch bitte mal eine Beispielmappe hoch.
Gruß
Nepumuk
AW: Laufzeitfehler 91
17.11.2021 11:00:38
Nepumuk
Hallo Florian,
und das VBA-Kennwort ist?
Gruß
Nepumuk
AW: Laufzeitfehler 91
17.11.2021 11:27:21
GerdL
Moin Florian,
quick and dirty

Sub DatenuebernahmeQuelldatei()
Dim lngAktuelleZeile, lngZeilenBuchungen As Long
Dim wksBuchungenPruefen2021 As Worksheet, wksQuelldaten As Worksheet
Dim intAktuelleZeile As Long
Dim strZuordnung As String
Dim X As Range
'Tabellenblatt Buchungen prüfen setzen
Set wksBuchungenPruefen2021 = ActiveWorkbook.Sheets("Buchungen prüfen 2021")
Set wksQuelldaten = ActiveWorkbook.Sheets("Quelldaten")
'Autofilter in Buchungen prüfen löschen
If wksBuchungenPruefen2021.FilterMode Then
wksBuchungenPruefen2021.ShowAllData
End If
'Autofilter in Quelldaten löschen
If wksQuelldaten.FilterMode Then
wksQuelldaten.ShowAllData
End If
'Anzahl der Buchungen in Buchungen prüfen ermitteln
lngZeilenBuchungen = wksBuchungenPruefen2021.Cells(Rows.Count, 1).End(xlUp).Row
For lngAktuelleZeile = 3 To lngZeilenBuchungen
With wksBuchungenPruefen2021
strZuordnung = _
.Cells(lngAktuelleZeile, 1).Value & _
.Cells(lngAktuelleZeile, 2).Value & _
.Cells(lngAktuelleZeile, 3).Value & _
.Cells(lngAktuelleZeile, 4).Value & _
.Cells(lngAktuelleZeile, 5).Value & _
.Cells(lngAktuelleZeile, 6).Value & _
.Cells(lngAktuelleZeile, 7).Value & _
.Cells(lngAktuelleZeile, 9).Value
End With
'wksBuchungenPruefen2021.Cells(lngAktuelleZeile, 14).Value = wksQuelldaten.Columns(29).Find(What:=strZuordnung, LookIn:=xlValues).Offset(-15, 0).Value
Set X = wksQuelldaten.Columns(29).Find(What:=strZuordnung, LookIn:=xlValues, Lookat:=xlWhole)
If Not X Is Nothing Then
wksBuchungenPruefen2021.Cells(lngAktuelleZeile, 14).Value = X.Offset(0, -15)
End If
Next lngAktuelleZeile
End Sub
Gruß Gerd
Anzeige
AW: Laufzeitfehler 91
17.11.2021 11:36:46
Nepumuk
Hallo Florian,
1. Du hast dich in der Suchspalte vertan, die Spalte mit den Werten ist die 29 und nicht die 28.
2. Mit .Offset(-15, 0) springst du 15 Zeilen nach oben, Du willst wahrscheinlich aber 15 Spalten nach links. Also: .Offset(0, -15)
Gruß
Nepumuk
AW: Laufzeitfehler 91
17.11.2021 13:50:50
Florian
Ok super. Jetzt läuft es durch. Es kann so einfach sein ;)
Allerdings ist der Code nicht gerade performant, wie ich gemerkt habe. Bei 3000 Zeilen läuft es ca. 10 Minuten.
Hast Du eine Idee, wie man das auch performanter lösen kann?
AW: Laufzeitfehler 91
17.11.2021 14:19:11
peterk
Hallo

Sub AnySub()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
‘Makro Code
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True
End Sub
Peter
Anzeige
AW: Laufzeitfehler 91
17.11.2021 14:30:20
Nepumuk
Hallo Florian,
so ok?

Public Sub DatenuebernahmeQuelldatei()
Dim ialngIndex As Long
Dim wksBuchungenPruefen2021 As Worksheet, wksQuelldaten As Worksheet
Dim strZuordnung As String
Dim avntValuesBuchungenPruefen2021 As Variant, avntValuesQuelldaten As Variant
Dim objDictionary As Object
Application.ScreenUpdating = False
'Tabellenblatt Buchungen prüfen setzen
Set wksBuchungenPruefen2021 = ThisWorkbook.Worksheets("Buchungen prüfen 2021")
Set wksQuelldaten = ThisWorkbook.Worksheets("Quelldaten")
'Autofilter in Buchungen prüfen löschen
If wksBuchungenPruefen2021.FilterMode Then
wksBuchungenPruefen2021.ShowAllData
End If
'Autofilter in Quelldaten löschen
If wksQuelldaten.FilterMode Then
wksQuelldaten.ShowAllData
End If
With wksBuchungenPruefen2021
avntValuesBuchungenPruefen2021 = .Range(.Cells(3, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 9)).Value
End With
With wksQuelldaten
avntValuesQuelldaten = .Range(.Cells(3, 14), .Cells(Rows.Count, 29).End(xlUp)).Value
End With
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
For ialngIndex = LBound(avntValuesQuelldaten) To UBound(avntValuesQuelldaten)
objDictionary.Item(Key:=avntValuesQuelldaten(ialngIndex, 16)) = avntValuesQuelldaten(ialngIndex, 1)
Next
With wksBuchungenPruefen2021
For ialngIndex = LBound(avntValuesBuchungenPruefen2021) To UBound(avntValuesBuchungenPruefen2021)
strZuordnung = avntValuesBuchungenPruefen2021(ialngIndex, 1) & avntValuesBuchungenPruefen2021(ialngIndex, 2) & _
avntValuesBuchungenPruefen2021(ialngIndex, 3) & avntValuesBuchungenPruefen2021(ialngIndex, 4) & _
avntValuesBuchungenPruefen2021(ialngIndex, 5) & avntValuesBuchungenPruefen2021(ialngIndex, 6) & _
avntValuesBuchungenPruefen2021(ialngIndex, 7) & avntValuesBuchungenPruefen2021(ialngIndex, 9)
If objDictionary.Exists(strZuordnung) Then .Cells(ialngIndex + 2, 14).Value = objDictionary.Item(Key:=strZuordnung)
Next
End With
Application.ScreenUpdating = True
Set objDictionary = Nothing
Set wksBuchungenPruefen2021 = Nothing
Set wksQuelldaten = Nothing
End Sub
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige