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

Zellen füllen duch Daten

Zellen füllen duch Daten
Georg
Hallo liebe VBA Profis,
ich versuche 1 kleines Makro-Programm zu schreiben und schaffe nicht richtig was ich möchte
in der Spalte J sind ein paar Daten mit Buchstaben eingetragen (zb. 04.08.2011 gh/rb ....). In der spalte M möchte ich gerne den Inhalt in grün ausfüllen aber nur wenn in J zb. J1 1 Datum drin steht
Das sieht so aus
https://www.herber.de/bbs/user/77501.xlsm
Danke
AW: Zellen füllen duch Daten
14.11.2011 17:12:48
Josef

Hallo Georg,
ohne Fehlerbehandlung.
Sub essay()
  Dim rng As Range, vntSplit As Variant, lngIndex As Long
  
  
  For Each rng In Columns(10).SpecialCells(xlCellTypeConstants).Cells
    rng.Offset(0, 3).Interior.ColorIndex = 16
    vntSplit = Split(rng, vbLf)
    For lngIndex = 0 To UBound(vntSplit)
      If IsDate(vntSplit(lngIndex)) Then
        rng.Offset(0, 3).Interior.ColorIndex = 4
        Exit For
      End If
    Next
  Next
  
  
End Sub



« Gruß Sepp »

Anzeige
AW: Zellen füllen duch Daten
14.11.2011 22:41:40
georg
Hallo sepp
echt cool das funktioniert echt danke
wie kann ich das Programm ändert, wenn ich zb in der 7. Reihe die Zelle (7,13) in grün markieren möchte aber nur wenn in (7,10), (7,11) und (7,12) 3 Daten stehen?
Gruß georges
AW: Zellen füllen duch Daten
14.11.2011 23:31:13
Josef

Hallo Georg,
das geht z. B. so.
Sub essay()
  Dim rng As Range
  
  For Each rng In Columns(10).SpecialCells(xlCellTypeConstants).Cells
    rng.Offset(0, 3).Interior.ColorIndex = 16
    If containsDATE(rng, vbLf) And containsDATE(rng.Offset(0, 1), vbLf) And _
      containsDATE(rng.Offset(0, 2), vbLf) Then rng.Offset(0, 3).Interior.ColorIndex = 4
  Next
  
End Sub


Private Function containsDATE(ByRef Target As Range, ByVal Separator As Variant) As Boolean
  Dim vntSplit As Variant
  
  vntSplit = Split(Target, Separator)
  
  For lngIndex = 0 To UBound(vntSplit)
    If IsDate(Trim(vntSplit(lngIndex))) Then
      containsDATE = True
      Exit Function
    End If
  Next
  
End Function



« Gruß Sepp »

Anzeige
AW: Zellen füllen duch Daten
14.11.2011 23:52:52
georg
Hallo sepp
echt klasse was du geschrieben hast
aber nicht alle Reihen haben 3 Daten
es gibt ein paar die 2 oder nur 1 Datum in der Zelle haben und mit der Funktion For Each rng In Columns(10) klappt das nicht.
z.b
wenn es 1 Datum gibt, ist (x, 13) grün
wenn es 2 Daten gibt, ist (x,13) grün
danke
AW: Zellen füllen duch Daten
15.11.2011 08:54:17
Georg
Hallo sepp
danke noch mal
das passt schon ich habe meine Frage selbst gelöst :)
georges
AW: Zellen füllen duch Daten
15.11.2011 09:09:48
Georg
Ich habe überall die For-Schleiße kopiert aber kann ich das Prblem mit 1 if Anweisung lösen?
wenn ja wie?
Danke
AW: Zellen füllen duch Daten
15.11.2011 18:28:59
Josef

Hallo Georg,
möglich, wenn man den wüsste, was genau du willst. Zeig doch mal deinen Code.

« Gruß Sepp »

Anzeige
AW: Zellen füllen duch Daten
16.11.2011 08:41:41
georg
Hallo sepp
ich habe genau deinen Code benutzt und habe den ergänzt.
Mein Problem ist, dass für bestimmten Zellen muss die Splate M grün sein
Zb wenn 1 Datum in cells(6, 10) sich befindet, muss cells(6,13) grün sein. Nicht for each rng
oder wenn cells(9,10) und cells(9,11) muss cells(9,13) grün sein etc...

Die Datei https://www.herber.de/bbs/user/77525.xlsm wurde aus Datenschutzgründen gelöscht


Danke georges
AW: Zellen füllen duch Daten
16.11.2011 19:19:38
Josef

Hallo Georg,
also ein Problem zu beschreiben ist wohl nicht deine Stärke.
Spalte M soll wohl grün werden, wenn in einer der drei Spalten J-L ein Datum enthalten ist.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub worksheet_activate()
  Dim rng As Range
  
  For Each rng In Columns(10).SpecialCells(xlCellTypeConstants).Cells
    rng.Offset(0, 3).Interior.ColorIndex = 16
    If containsDATE(rng, vbLf) Or containsDATE(rng.Offset(0, 1), vbLf) Or _
      containsDATE(rng.Offset(0, 2), vbLf) Then rng.Offset(0, 3).Interior.ColorIndex = 4
  Next
  
End Sub



Private Function containsDATE(ByRef Target As Range, ByVal Separator As Variant) As Boolean
  Dim vntSplit As Variant
  
  vntSplit = Split(Target, Separator)
  
  For lngIndex = 0 To UBound(vntSplit)
    If IsDate(Trim(vntSplit(lngIndex))) Then
      containsDATE = True
      Exit Function
    End If
  Next
  
End Function



« Gruß Sepp »

Anzeige
AW: Zellen füllen duch Daten
17.11.2011 09:37:27
Georg
Morgen sepp,
ja ich gebe zu beschreiben ist nicht so meine Stärke
habe manchmal Probleme und echt sorry. Bin Franzose
wollte gerne wissen wie ich so dein Programm ändern kann:
- M6 ist grün nur wenn in J6 1 Datum steht
- M7 ist grün nur wenn in J7, K7 und L7 Daten stehen
- M8 ist grün nur wenn in J9 und K9 Daten stehen
Mit eine "or" Funktion wird z.b. M9 grün sein, wenn nur in J9 1 Datum steht. Das möchte ich nicht
Ist es möglich die 3 Punkte zu lösen
ich hoffe, dass ich dich nicht mit die Frage ärgern
Danke Georges
AW: Zellen füllen duch Daten
17.11.2011 16:58:25
Josef

Hallo Georges,
kein Problem, das du Franzose bist;-)) Nein im Ernst, wenn ich die Frage in einem französischen Forum stellen müsste, würde ich wahrscheinlich kläglich scheitern.
Der folgende Code sollte das tun was du willst.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub worksheet_activate()
  Dim rng As Range
  
  For Each rng In Columns(10).SpecialCells(xlCellTypeConstants).Cells
    rng.Offset(0, 3).Interior.ColorIndex = 16
    If containsDATE(rng, vbLf) Or (containsDATE(rng.Offset(0, 1), vbLf) Or _
      containsDATE(rng.Offset(0, 2), vbLf)) Then rng.Offset(0, 3).Interior.ColorIndex = 4
  Next
  
End Sub



Private Function containsDATE(ByRef Target As Range, ByVal Separator As Variant) As Boolean
  Dim vntSplit As Variant, lngIndex As Long
  
  vntSplit = Split(Target, Separator)
  
  For lngIndex = 0 To UBound(vntSplit)
    If IsDate(Trim(vntSplit(lngIndex))) Then
      containsDATE = True
      Exit Function
    End If
  Next
  
End Function



« Gruß Sepp »

Anzeige
AW: Zellen füllen duch Daten
18.11.2011 09:23:45
Georg
Morgen Sepp,
Anhang schicke ich dich 1 Excel doc
das ist was ich meinte
in der Reihe 7 für die Zelle K7 fehlt das Datum und die Zelle M7 ist grün gefärbt. Das ist falsch, da alle Zellen Daten haben müssen.
Die Reihe 9 ist zb in Ordnung. Hier müssen die Zellen J9 und K9 Daten haben
Das versuche ich zu programmieren
Danke
https://www.herber.de/bbs/user/77554.xlsm
AW: Zellen füllen duch Daten
18.11.2011 17:32:32
Josef

Hallo Georges,
das sollte es aber nun endgültig sein.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub worksheet_activate()
  Dim rng As Range
  
  For Each rng In Columns(10).SpecialCells(xlCellTypeConstants).Cells
    rng.Offset(0, 3).Interior.ColorIndex = 16
    If containsDATE(rng, vbLf) Then
      If (Not containsDATE(rng.Offset(0, 1), vbLf) And _
        Not containsDATE(rng.Offset(0, 2), vbLf)) Or _
        (containsDATE(rng.Offset(0, 1), vbLf) And _
        Not containsDATE(rng.Offset(0, 2), vbLf)) Or _
        (containsDATE(rng.Offset(0, 1), vbLf) And _
        containsDATE(rng.Offset(0, 2), vbLf)) Then _
        rng.Offset(0, 3).Interior.ColorIndex = 4
    End If
  Next
  
End Sub


Private Function containsDATE(ByRef Target As Range, ByVal Separator As Variant) As Boolean
  Dim vntSplit As Variant, lngIndex As Long
  
  vntSplit = Split(Target, Separator)
  
  For lngIndex = 0 To UBound(vntSplit)
    If IsDate(Trim(vntSplit(lngIndex))) Then
      containsDATE = True
      Exit Function
    End If
  Next
  
End Function



« Gruß Sepp »

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige