Anzeige
Archiv - Navigation
1088to1092
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

VBA - Laufzeitfehler 91

VBA - Laufzeitfehler 91
Bibo
Hallo liebe EXCEL-Freunde,
mit nachstehendem Code, den ich hier aus dem Forum erhalten habe, werden zwei Bestandstabellen verglichen, Bestandsabweichungen in beiden Tabellen gelb sowie die in der Tabelle "Bestand_KOLIBRI" fehlenden Datensätze der Tabelle "Bestand_DVU_VTT" rot markiert.
Option Explicit
Sub Vergleich_Neu_Alt()
'Unterschiedliche Einträge in den Tabellen markieren
Dim wks1 As Worksheet
Dim wks2 As Worksheet
Dim ZeileNeu As Long, Spalte As Long, Zelle As Range
Dim varKst, varArt, strAdresse1 As String, gefunden As Boolean
Set wks1 = Sheets("Bestand_KOLIBRI")
'Tabelle1 - anpassen
Set wks2 = Sheets("Bestand_DVU_VTT")
'Tabelle2 - anpassen, in dieser Tabelle wird gekennzeichnet!
'Farbmarkierungen zurücksetzen
With wks1
.UsedRange.Interior.ColorIndex = xlColorIndexNone
End With
With wks2
.UsedRange.Interior.ColorIndex = xlColorIndexNone
End With
For ZeileNeu = 2 To wks2.Cells(wks2.Rows.Count, 1).End(xlUp).Row
varKst = wks2.Cells(ZeileNeu, 1).Value 'Kostenstelle - neu
varArt = wks2.Cells(ZeileNeu, 2).Value 'Artikel - neu
'Kst in alt suchen
Set Zelle = wks1.Columns(1).Find(what:=varKst, LookIn:=xlValues, _
lookat:=xlWhole)
strAdresse1 = Zelle.Address
gefunden = False
If Not Zelle Is Nothing Then
Do
'Prüfen ob und Artikel übereinstimmt
If varArt = wks1.Cells(Zelle.Row, 2) Then
gefunden = True
'Spalten C bis G in den Zeilen vergleichen
For Spalte = 4 To 4
If wks1.Cells(Zelle.Row, Spalte).Value _
 wks2.Cells(ZeileNeu, Spalte).Value Then
'Zelle gelb markieren
wks2.Cells(ZeileNeu, Spalte).Interior.ColorIndex = 6
wks1.Cells(Zelle.Row, Spalte).Interior.ColorIndex = 6
End If
Next
Exit Do
End If
'Nächsten KST-Eintrag suchen
Set Zelle = wks1.Columns(1).FindNext(after:=Zelle)
Loop Until Zelle.Address = strAdresse1
End If
If gefunden = False Then
With wks2
'Spalten A bis D in zeile gelb markieren
.Range(.Cells(ZeileNeu, 1), .Cells(ZeileNeu, 4)).Interior.ColorIndex = 6
End With
End If
Next
Call vergleichMatrixgeloescht
End Sub

Sub vergleichMatrixgeloescht()
'gelöschte Einträge im Bestand alt markieren
Dim wks1 As Worksheet
Dim wks2 As Worksheet
Dim ZeileAlt As Long, Zelle As Range
Dim varKst, varArt, strAdresse1 As String, gefunden As Boolean
Set wks1 = Sheets("Bestand_DVU_VTT")
'Tabelle1 - anpassen
Set wks2 = Sheets("Bestand_KOLIBRI")
'Tabelle2 - anpassen, in dieser Tabelle wird gekennzeichnet!
For ZeileAlt = 2 To wks2.Cells(wks2.Rows.Count, 1).End(xlUp).Row
varKst = wks2.Cells(ZeileAlt, 1).Value 'Kostenstelle - alt
varArt = wks2.Cells(ZeileAlt, 2).Value 'Artikel - alt
'Kst in neu suchen
Set Zelle = wks1.Columns(1).Find(what:=varKst, LookIn:=xlValues, _
lookat:=xlWhole)
strAdresse1 = Zelle.Address
gefunden = False
If Not Zelle Is Nothing Then
Do
'Prüfen ob Artikel auch übereinstimmt
If varArt = wks1.Cells(Zelle.Row, 2) Then
gefunden = True
Exit Do
End If
'Nächsten KST-Eintrag suchen
Set Zelle = wks1.Columns(1).FindNext(after:=Zelle)
Loop Until Zelle.Address = strAdresse1
End If
If gefunden = False Then
With wks2
'Spalten A bis D in Zeile rot markieren
.Range(.Cells(ZeileAlt, 1), .Cells(ZeileAlt, 4)).Interior.ColorIndex = 3
End With
End If
Next
End Sub
Die Anweisung "

Sub Vergleich_Neu_Alt()" wird über eine Schaltfläche gestartet und ruft zuletzt die Anweisung "
Sub vergleichMatrixgeloescht()" auf.
Es kommt zur Fehlermeldung "Objektvariable oder With-Blockvariable nicht festgelegt", die  _
Anweisung "

Sub vergleichMatrixgeloescht()" wird nach Bestätigung des OK-Buttons nicht ausgeführt.
Die Anweisung "

Sub Vergleich_Neu_Alt()" läuft durch und liefert auch richtige Ergebnisse.
Wenn ich das Makro "

Sub vergleichMatrixgeloescht()" hingegen über die Taste F5 im VBA-Editor aufrufe, erhalte ich  _
zwar (auch) die Fehlermeldung "Laufzeitfehler 91 - Objektvariable oder With-Blockvariable nicht festgelegt", der Code markiert jedoch wie gewünscht die fehlenden Datensätze der Tabelle "Bestand_DVU_VTT" in der Tabelle "Bestand_KOLIBRI" wenn ich die Fehlermeldung mit der OK-Schaltfläche bestätigt habe.
Wie ist das zu erklären bzw. noch wichtiger, wie ist dieser Bug zu korrigieren?
Ich danke Euch für die Unterstützung.
Mit freundlichem Gruß
Bibo


		

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
doppelt oT
20.07.2009 15:04:00
zu
zu
Anzeige

89 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige