Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1592to1596
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

betroffene Zeile finden

betroffene Zeile finden
02.12.2017 23:54:25
Thomas
Hallo Excelfreunde,
ich bin gerade dabei mir ein Macro zusammen zuschreiben das mir unter bestimmten Bedingungen bestimmte Zellen Farbig markiert.
Folgendes habe ich schon
Dim oCell As Range 'Zellen sind ein Range-Objekt und auch so definiert
For Each oCell In oRgn.Cells
'Guck dir jede Zelle des Range an
If CLng(oCell.Text) = 1 Then 'Wenn der Wert größer als 5 mache etwas
With oCell
.ClearFormats ' formate löschen
.Font.Bold = True
.Interior.ColorIndex = Tabelle5.Range("b8").Value
.Font.ColorIndex = 2
End With
End If
Next
Mit diesem Teil kann ich alle Zellen in der eine 1 steht mit der Hintergrundfar aus der Zelle Tabelle5.Range("b8") färben. Genau dies b8 ist zu statisch. Denn der benötigte colorIndex steht in der Spalte B in der jeweiligen zeile der gefundenen Zelle,
Beispiel: in der Zelle F 9 steht eine 1 ( wird mit einer Formel ermittelt ) nun möchte ich diese Zelle mit dem Colorindex färben der in B 9 steht. Wird in der Zelle G10 eine 1 gefunden so steht der Colorindex in der Zelle B10 unsw.
Das oben stehende Macro starte ich mit
Private Sub CommandButton1_Click()
'Sub test()
'Teste den Bereich A1:C3
Call Farbe_auslesen
formatRange Tabelle4.Range("d4:sh18")
im Beispiel habe ich versucht das Problem besser zu beschreiben
https://www.herber.de/bbs/user/118068.xlsm
kann mir jemand zeigen wie ich es besser machen könnte?
habt schon mal besten dank für euer Interesse.
mfg thomas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW = Tabelle5.Range(oCell.Row, 2).Value
03.12.2017 03:47:27
Gerd
Gruß Gerd
AW: betroffene Zeile finden
03.12.2017 10:12:24
Thomas
Hallo Gerd L.
hab besten dank das Du dir dies Problem angeschaut hast.
Leider bekomme ich den Fehler ( Methode Range ist für das Object fehlgeschlagen )
kannst du nochmal schauen?
liebe grüsse tohmas
AW: betroffene Zeile finden
03.12.2017 10:23:41
Hajo_Zi
ich habe mal paar Zeilen ergänzt.

Option Explicit
Sub Herber()
Dim oCell As Range 'Zellen sind ein Range-Objekt und auch so definiert
Dim oRgn As Range
Set oRgn = Range("A1:A100")
For Each oCell In oRgn.Cells
'Guck dir jede Zelle des Range an
If IsNumeric(oCell) And oCell  "" Then
If CLng(oCell.Text) = 1 Then 'Wenn der Wert größer als 5 mache etwas
With oCell
.ClearFormats ' formate löschen
.Font.Bold = True
.Interior.ColorIndex = Tabelle5.Range("b8").Value
.Font.ColorIndex = 2
End With
End If
End If
Next
End Sub
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: betroffene Zeile finden
03.12.2017 10:34:29
Werner
Hallo Thomas,
wenn die Zahlen in Spalte F von Hand eingetragen werden, dann ginge das auch automatisch bei Eintrag, ohne eine Schaltfläche. Das geht aber nicht, wenn die Zahlen in Spalte F das Ergebnis einer Formelberechnung ist.
Code gehört ins Codemodul des Arbeitsblattes, auf dem in Spalte F die Zahlen eingetragen werden.
Rechtsklick auf den Tabellenblattreiter - Code anzeigen - Code rechts in Codefenster kopieren.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 6 And Target.Row >= 5 Then 'Spalte F ab Zeile 5
If Target.Count > 1 Then
MsgBox "Keine Mehrfachauswahl zulässig."
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit Sub
End If
If Not Target Is Nothing Then
If Target.Value = 1 Then
If Tabelle5.Cells(Target.Row, 2)  "" Then
Target.ClearFormats
Target.Font.Bold = True
Target.Font.ColorIndex = 2
Target.Interior.ColorIndex = Tabelle5.Cells(Target.Row, 2)
End If
Else
Target.ClearFormats
End If
End If
End If
End Sub
Gruß Werner
Anzeige
zu Hajos Version
03.12.2017 10:41:21
Werner
Hallo Thomas,
wie Hajo in seinen Spezialbeiträgen schreibt liest er meine Beiträge nicht.
Leider wohl auch nicht die der Fragesteller - zumindest nicht richtig.
Das hier holt sich den Farbindes immer aus der gleichen Zelle
.Interior.ColorIndex = Tabelle5.Range("b8").Value
Du wolltest es ja aus der jeweiligen Zeile der Zelle die gefärbt wird
.Interior.ColorIndex = Tabelle5.Cells(oCell.Row, 2).Value
Gruß Werner
das klappt jetzt super
03.12.2017 11:39:34
Thomas
Hallo Werner,
deine beiden Versionen klappen super.
Hab recht vielen dank dafür.
In deiner Worksheet_Change version sieht es für mich so aus das du noch mit
If Tabelle5.Cells(Target.Row, 2) "" Then
auf leer prüfst ich versuche dies mal bei mir noch mit einzubauen auch diese Idee finde ich klasse.
wenn ich dies nicht schaffe würde ich mich noch mal melden.
Ansonsten wünsche ich Dir noch ein schönen ruhigen 1. Advent.
und nochmal vielen dank.
mfg
thomas
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
03.12.2017 20:15:09
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige