Clever-Excel-Forum

Normale Version: Objektvariable oder With Blockvariable nicht festgelegt in Loop
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

habe eine Schleife geschrieben, die in einer automatisch erstellten Arbeitsmappe den Zellbereich C9:C50 prüft und sofern in einer dieser Zellen ein Wert gefunden wurden, diesen in einer externen Datei sucht, dort zwei Zellen nach rechts springt, diesen Wert kopiert und anschließend in meiner Arbeitsmappe in der Zelle rechts daneben einfügt.

Das funktioniert auch wunderbar. Aber komischerweise wirft mir das Programm, nachdem es seine Aufgabe zufriedenstellend erfüllte folgenden Fehler entgegen:
Objektvariable oder With Blockvariable nicht festgelegt

Der Fehler bezieht sich auf die Zeile "asdf = offset ..." (also die drittletzte von unten)

Code:
'Leistungspositionen einfügen

Dim lr As Long
Dim AEBLastRowSpalte As String
Dim AEBLastRow As Integer


Dim Book1 As Workbook
Set Book1 = Workbooks("Personal")
AEBLastRowSpalte = "C"
lr = 9
Do
   lr = lr + 1
Loop While Range(AEBLastRowSpalte & lr) <> "" And lr < 100
AEBLastRow = lr
'MsgBox (lr)

Dim AEBW As Range
Dim AEBRange As Object
Dim AEBRowCount As Integer
Set AEBRange = Range("C9:C50")

For Each AEBW In AEBRange
'MsgBox (AEBW)
Dim lookFor As Range
Dim asdf As Long
Dim srchRange As Range

If AEBW.Value <> "" Then
Set srchRange = Book1.Sheets(13).Range("A3:C236").Find(AEBW.Value)
'If srchRange <> "" Then
asdf = srchRange.Cells.Offset(0, 2)
AEBW.Cells.Offset(0, 1) = asdf
End If

Gruß & Dank für Eure Hilfe
Hallo,

deine Variable srchRange ist hier wahrscheinlich nothing und deshabl kommt es zur Fehlermeldung.

Code:
Sub prcX()
   'Leistungspositionen einfügen
  
   Dim lr As Long
   Dim AEBLastRowSpalte As String
   Dim AEBLastRow As Integer
   Dim AEBW As Range
   Dim AEBRange As Object
   Dim AEBRowCount As Integer
   Dim lookFor As Range
   Dim asdf As Long
   Dim srchRange As Range
   Dim Book1 As Workbook
  
   Set Book1 = Workbooks("Personal")
   AEBLastRowSpalte = "C"
   lr = 9
   Do
       lr = lr + 1
   Loop While Range(AEBLastRowSpalte & lr) <> "" And lr < 100
   AEBLastRow = lr
   'MsgBox (lr)
      
   Set AEBRange = Range("C9:C50")
  
   For Each AEBW In AEBRange
   'MsgBox (AEBW)
      If AEBW.Value <> "" Then
         Set srchRange = Book1.Sheets(13).Range("A3:C236").Find(AEBW.Value)
         If Not srchRange Is Nothing Then
            asdf = srchRange.Cells.Offset(0, 2)
            AEBW.Cells.Offset(0, 1) = asdf
         End If
      End If
   Next AEBW
End Sub