Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
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

Suchschleife For Next in Do Loop

Suchschleife For Next in Do Loop
31.01.2017 14:29:30
Jan
Hallo liebe Leute,
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchschleife For Next in Do Loop
04.02.2017 22:21:17
Piet
Hallo Jan,
ausser das in der Do Loop Schleife der Aussprungbefehl bei Is Nothing fehlt kann ich sonst keinen Fehler erkennen. Kleiner Tipp von mir: - ich lade mir Suchbegriffe und Vergleiche mit If Then immer in eine Variable, besonders wenn ich sie mehrfach benötige. Das erleichtert die Übersicht beim Programmieren. Nur so als alter Praktiker Tipp
mfg Piet

diese Zeile würde ich aendern, sie wiederholt sich ja mehrmals
If Not IsEmpty(Makrosheet.Range("Suchbegriffe").Cells(i, 2)) Then
Txt = Makrosheet.Range("Suchbegriffe").Cells(i, 2)
Txt2 = Makrosheet.Range("Suchbegriffe").Cells(i + 1, 2)
If Not IsEmpty(Txt) Then
Do
Cells(Suchbegriff.Row, Suchbegriff.Column).Interior.ColorIndex = 6
Set Suchbegriff = Schleifenbereich.FindNext(Suchbegriff)
If Suchbegriff Is Nothing Then Exit Do
Loop While Ersteadresse  Suchbegriff.Address

Anzeige
Thread geschlossen - oWt
05.02.2017 18:44:25
Piet
,,,
Thread geschlossen - oWt
05.02.2017 18:42:17
Piet
,,,

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige