Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wert in variabler Spalte finden und Zeile markiere

Wert in variabler Spalte finden und Zeile markiere
24.10.2016 10:58:10
Pseudo
Hallo zusammen,
nach Tagen des Suchens bin ich jetzt verzweifelt genug, ein eigenes Thema zu eröffnen. Ich bin sicher es gibt zu dieser Frage schon offene Themen, aber ich brauche Hilfe bei meinem konkreten Problem, da ich es einfach nicht auf die Kette bekomme Eure Lösungen auf dieses zu transferieren...
Hier ist die Testdatei zu finden:
https://www.herber.de/bbs/user/108986.xlsx
Ziel des Codes:
Suche nach "Kogr" für die Zeile in der Spaltenüberschriften stehen (Verändert sich), gehe in Spalte in der "V" steht (immer gleicher Wert, aber untersch. Position). Suche in dieser Spalte nach Zellen mit dem Wert "*" und markiere die gesamte Zeile grün, die Zeilen in der kein Wert steht soll gelb markiert werden.
Ich hoffe Ihr könnt mir weiterhelfen, da ich einfach nicht weiß, welche Variablen ich bestimmen muss und wie diese dann in die richtige Prozedur übergeben werden sollen.
Danke im Voraus, ich hoffe die Datei hilft zum Verständnis.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert in variabler Spalte finden und Zeile markiere
24.10.2016 12:08:11
baschti007
Ich bin mir zwar nicht sicher aber guck mal ob das bei dir geht dieser Code muss in VBA auf das TabellenBlatt
Gesucht wird in A5
Gruß basti
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$5" Then
Dim c As Range
Dim Kogr As Long, V As Long
With ActiveSheet.Rows(6)
On Error GoTo ende
Kogr = .Find("Kogr", LookIn:=xlValues, LookAt:=xlWhole).Column
V = .Find("V", LookIn:=xlValues, LookAt:=xlWhole).Column
End With
With ActiveSheet.Columns(Kogr)
Set c = .Find(Target, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If c.Address  Target.Address Then
If c.Offset(0, V - Kogr) = "*" Then
Rows(c.Row).Interior.ColorIndex = 4
Else
Rows(c.Row).Interior.ColorIndex = 6
End If
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
End If
ende:
End Sub

Anzeige
AW: Wert in variabler Spalte finden und Zeile markiere
24.10.2016 12:29:01
baschti007
Oder wenn du es so meintest einfach in ein modul
=)
Gruß Basti
Sub endeee()
Dim c As Range
Dim Kogr As Long, V As Long, lastcell As Long
With ActiveSheet
On Error GoTo ende
Kogr = .Columns(1).Find("Kogr", LookIn:=xlValues, LookAt:=xlWhole).Row
V = .Rows(Kogr).Find("V", LookIn:=xlValues, LookAt:=xlWhole).Column
lastcell = .Cells(Rows.Count, 1).End(xlUp).Row
For Each c In .Range(.Cells(Kogr + 1, V), .Cells(lastcell, V))
If c = "*" Then
.Rows(c.Row).Interior.ColorIndex = 4
Else
.Rows(c.Row).Interior.ColorIndex = 6
End If
Next
End With
ende:
End Sub

Anzeige
AW: Wert in variabler Spalte finden und Zeile markiere
24.10.2016 12:44:25
Pseudo
Die zweite Variante funktioniert perfekt, danke Dir!
Ich habe aber leider etwas vergessen, dass diese Lösung wieder etwas komplexer machen sollte...
Der Code sollte neben der "V"-Spalte noch eine Spalte einfügen und als Spaltenüberschrift Kommentar einfügen. So weit so gut, aber:
Ein zweites Makro soll bei seiner Ausführung prüfen, ob Werte in die Zellen der Kommentarspalte eingegeben wurden. Ist das der Fall sollen die bisher gelb eingefärbten Zeilen, rot eingefärbt werden.
Wäre spitze wenn Du mir hier helfen könntest, da ich langsam nicht mehr weiß, wo vorne und hinten ist :D
Danke!
Gruß,
Pseudo
Anzeige
AW: Wert in variabler Spalte finden und Zeile markiere
24.10.2016 14:17:14
baschti007
A Ah Ok
Dann hier das erste Marko mit neuer Spalte und das Zweite zum finden wenn etwas in Kommentar steht
Gruß Basti
Sub endeee()
Dim c As Range
Dim Kogr As Long, V As Long, lastcell As Long
With ActiveSheet
On Error GoTo ende
Kogr = .Columns(1).Find("Kogr", LookIn:=xlValues, LookAt:=xlWhole).Row
V = .Rows(Kogr).Find("V", LookIn:=xlValues, LookAt:=xlWhole).Column
lastcell = .Cells(Rows.Count, 1).End(xlUp).Row
For Each c In .Range(.Cells(Kogr + 1, V), .Cells(lastcell, V))
If c = "*" Then
.Rows(c.Row).Interior.ColorIndex = 4
Else
.Rows(c.Row).Interior.ColorIndex = 6
End If
Next
.Columns(V + 1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.Cells(Kogr, V + 1) = "Kommentar "
End With
ende:
End Sub
Sub FindKommentar()
Dim c As Range
Dim Kogr As Long, Kommentar  As Long, lastcell As Long
With ActiveSheet
On Error GoTo ende
Kogr = .Columns(1).Find("Kogr", LookIn:=xlValues, LookAt:=xlWhole).Row
Kommentar = .Rows(Kogr).Find("Kommentar ", LookIn:=xlValues, LookAt:=xlWhole).Column
lastcell = .Cells(Rows.Count, 1).End(xlUp).Row
For Each c In .Range(.Cells(Kogr + 1, Kommentar), .Cells(lastcell, Kommentar))
If c  "" Then
.Rows(c.Row).Interior.ColorIndex = 3
End If
Next
End With
ende:
End Sub

Anzeige
AW: Wert in variabler Spalte finden und Zeile markiere
24.10.2016 15:04:20
Pseudo
Einwandfrei :)
Vielen Dank für deine schnelle Hilfe, alleine wäre ich wohl noch lange nicht fertig ^^
Gruß
Pseudo

350 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige