Suchschleife For Next in Do Loop
31.01.2017 14:29:30
Jan
ich versuche mich grade daran mein erstes halbwegs vernünftiges Makro zu schreiben.
Es soll aus der Excelmappe Suchbegriffe ziehen und in einer anderen Mappe die Zeilen, in denen der Suchbegriff gefunden wurde einfärben. Beim Test mit der ersten Datei hat es auch super funktioniert - beim zweiten Test mit einer anderen Datei nicht mehr.
Das Problem startet bei XXXXXXXXXXXSchleifenbeginnXXXXXXXXXXXXXXX
Ich vermute, dass der Suchbegriff nicht gefunden wurde und deshalb "Ersteadresse = Suchbegriff.Address" nicht ausgewertet werden kann. Bei Ausführung des Codes wird mir jedenfalls an dieser Stelle der Fehler angezeigt mit dem Fehlercode "Laufzeitfehler 91 - Objektvariable oder With Blockvariable nicht festgelegt"
Ich bin für sämtliches Feedback dankbar (auch zum Aufbau des Gesamtcodes, einfahc weil ich es noch nie gemacht habe)
Viele Grüße,
Jan
Der Code:
Public Makromaster As Workbook
Public Webtrekkdatei As Workbook
Public Rabattsheet As Worksheet
Public Makrosheet As Worksheet
Public Suchbegriff As Range
Public Schleifenbereich As Range
Public Demandgrenzwert As Double
Public Webtrekkpfad As String
Public Ersteadresse As String
Public Rabattcodespalte As String
Public Demandspalte As String
Public AnzahlSuchbegriffe As Integer
Public Schleifenzeilen As Integer
Public StartzeileCodes As Integer
Dim LetzteZeile As Integer
Public i As Integer
Public j As Integer
Option Explicit
Sub SuchenundFärben()
'Namenszuweisung der Makromappe
Set Makromaster = ThisWorkbook
Set Makrosheet = Makromaster.Worksheets("Makrosheet")
'XXXXXXXXXXXXXXXXEinlesen_der_Variablenwerte_aus_dem_MakromasterXXXXXXXXXXXXXXXXXXXXXXXX
'Einlesen der Anzahl Zeilen, welche von der Schleife durchlaufen werden sollen
Schleifenzeilen = Makrosheet.Range("Schleifenlänge").Value
'Einlesen des Pfads der Webtrekkdatei
Webtrekkpfad = Makrosheet.Range("Auslesepfad1").Value
'Einlesen des Demand Grenzwertes
Demandgrenzwert = Makrosheet.Range("GrenzwertDemand").Value
'Einlesen der Zeile, ab der die Rabattcodes starten
StartzeileCodes = Makrosheet.Range("StartzeileCodes").Value
'Einlesen der Spalte, in der sich die Codes befinden
Rabattcodespalte = Makrosheet.Range("SpalteRabattcode").Value
'Einlesen der Spalte, in der sich die Demandwerte befinden
Demandspalte = Makrosheet.Range("Demandspalte").Value
'Einlesen der Anzahl an Suchbegriffen
AnzahlSuchbegriffe = Makrosheet.Range("AnzahlSuchbegriffe").Value
'XXXXXXXXXXXXXXXXEinlesen_der_Variablenwerte_aus_dem_Makromaster_EndeXXXXXXXXXXXXXXXXXXXXXXXX
'Updatebenachrichtigungen deaktivieren
Application.AskToUpdateLinks = False
'Öffnen der Webtrekkdatei Mappe
Workbooks.Open (Webtrekkpfad)
'Namenszuweisung der Webtrekkmappe
Set Webtrekkdatei = ActiveWorkbook
Set Rabattsheet = Webtrekkdatei.Worksheets(1)
'Maximallänge der Schleife, die durchlaufen wird
Set Schleifenbereich = Rabattsheet.Range(Rabattcodespalte & "1:" & Rabattcodespalte & _
Schleifenzeilen)
'Aktivieren der Rabattsheet Seite
Rabattsheet.Activate
'Ermitteln der Zeilenanzahl, in denen ein Demandvalue steht
LetzteZeile = Rabattsheet.Range(Demandspalte & StartzeileCodes).CurrentRegion.Rows.Count + _
StartzeileCodes - 3
'Schleife, die alle Zeilen blau färbt, deren Demand kleiner als der eingegebene Grenzwert ist
For j = StartzeileCodes To LetzteZeile
If Rabattsheet.Range(Demandspalte & j & ":" & Demandspalte & j).Value Suchbegriff.Address
Next
End Sub