Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Objektvariable oder With Blockvariable nicht festgelegt in Loop
#1
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


Angehängte Dateien
.xlsm   Beispiel Quelle.xlsm (Größe: 85,02 KB / Downloads: 1)
.xlsx   beispieldatei.xlsx (Größe: 15,95 KB / Downloads: 1)
Antworten Top
#2
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
Gruß Stefan
Win 10 / Office 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste