VBA Objektvariable oder With Blockvariable nicht festgelegt?

3 Antworten

Ich weiß nicht, ob genau das dein Problem ist, aber nextStammRowNr ist zu Anfang uninitialisiert. Es kann passieren, dass versucht wird, auf M0 zuzugreifen.

Manchmal greifst du auf die Zellen mit .Value zu, manchmal nicht. Das ist uneinheitlich.

Woher ich das weiß:Hobby

nach der Zeile ????

Und kannst Du den Code vielleicht nochmal lesbarer schicken?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

Blacckoutbash 
Beitragsersteller
 30.07.2019, 14:44

Hallo, sorry wurde bearbeitet.

0
Oubyi, UserMod Light  30.07.2019, 14:55
@Blacckoutbash

Danke.
Ich habe jetzt die anderen Antworten nicht gelesen, bin aber schon soweit gekommen:

...For Each curSapCell In sapRange

Set foundStammCell = stammRange.Find(curSapCell.Value, LookAt:=xlWhole)
If Not foundStammCell Is Nothing Then
If Not foundStammCell = curSapCell.Value Then
stammSheet.Range("M" & nextStammRowNr) = sapSheet.Range("M" & curSapCell.Row).Value
nextStammRowNr = nextStammRowNr + 1
Else
stammSheet.Range("M" & foundStammCell.Row) = sapSheet.Range("M" & curSapCell.Row).Value
End If
End If
Next curSapCell 

Also einmal ein "Set" am Anfang der Zeile und zum anderen das "Nothing" abfangen.
Habe jetzt nicht mehr weiter getestet, muss leider weg.

Schaue nachher auf jeden Fall noch vorbei, aber ich denke, die anderen Experten werden Dir bis dahin geholfen habe.

0

Bitte formatiere den Code als Code. (Dafür gibt es </> in der Formatierungsleiste.)

Und verrate uns auch bitte, in welcher Zeile der Fehler auftritt.

Vermutlich ist das bei

foundStammCell = ...

ein Range ist ein Objekt, also musst du entweder

Set foundStammCell = ...

nehmen oder foundStammCell einen Wert vom Typ Range zuweisen, bevor du mit

foundStammCell = ...

seiner Value-Eigenschaft etwas zuweist.

Tipp: Gewöhn dir an, dich nicht auf Default-Eigenschaften zu verlassen, also z. B.

 foundStammCell.Value = ...

zu verwenden, dann fallen solche Fehler viel schneller auf. (Und in VB.NET gibt es sowieso keine "nichtindizierten" Default-Eigenschaften mehr.)

Woher ich das weiß:eigene Erfahrung

Blacckoutbash 
Beitragsersteller
 30.07.2019, 14:54

Fehler tritt nach:

foundStammCell = stammRange.Find(curSapCell.Value, LookAt:=xlWhole)

auf. Ich bin was VBA angeht ein blutiger Anfänger und verwirre mich gerade glaube ich komplett. Ich möchte eigentlich nur 2 Spalten aus zwei Dateien vergleichen und dann aus der einen Datei Datum zu den jeweiligen Einträgen rauskopieren und dann in der Stammdatei zu den richtigen hinzufügen. Gibt es dafür eventuell eine einfachere Variante oder mache ich das einfach viel zu kompliziert? Hier Beispielbild: https://imgur.com/JFwdZoq

0
PWolff  30.07.2019, 15:03
@Blacckoutbash

Probier mal

Set foundStammCell = stammRange.Find(curSapCell.Value, LookAt:=xlWhole)

dann dürfte der Fehler eine Zeile später auftreten - wenn foundStammCell dann Nothing sein sollte

0