Hallo Holger,
erstmal danke für deine Hilfe. Klappt schon einigermassen,habe nun nur noch ein Problem. Ich will, das der Button mit dem ich das ganze aktiviere im Blatt Namens Werte liegt, dann soll in MeineTabelle gesucht werden, dies habe ich vorher definiert und dann der Wert wieder in Werte in B67 ausgegeben werden.
Momentan sieht mein Makro so aus.
Ich hoffe du kannst mir noch einen letzten Abschließenden Tip geben. Bin dir echt dankbar. Gruß Sabine
Sub VBMauslesen()
'Welche Tabelle soll verwendet werden?
MeineTabelle = Worksheets(1).Name
' Zeile
Von = 4 'Start Teil (Zeile)
Bis = Worksheets(MeineTabelle).UsedRange.Rows.Count
Bis2 = Worksheets(MeineTabelle).UsedRange.Columns.Count
Stat = Bis2 - 2
Sheets(MeineTabelle).Activate
Ber = InputBox("Anfangsspalte:Endspalte" + vbCrLf + vbCrLf + "Beispiel: D:AC", "Suchbereich")
a = "abcdefghijklmnopqrstuvwxyz:"
ZelleVBM = "B66"
VBM = 0 ' Startwert
For I = 1 To Cells(Rows.Count, 16).End(xlUp).Row
If Left(Worksheets(MeineTabelle).Range("P" & I), 2) = "TI" Then Exit For
Exit Sub
End If
For I = 1 To Len(A)
j = InStr(Ber, ":")
Set r = Range(Ber)
sc = r.Column 'erste Spalte
ec = r.Columns.Count + r.Column - 1 'letzte Spalte
oc = Stat 'Offenspalte
For I = 1 To Cells(Rows.Count, oc).End(xlUp).Row
If Cells(I, oc) = "offen" Then
For j = sc To ec
A = Cells(I, j).Interior.ColorIndex
If A = 3 Or A = 50 Or A = 6 Then 'tatsächliche Farbindizees einsetzen
B = B + 1
Exit For 'Wenn weggelassen, werden Zellen gezählt, so Zeilen
End If
Next j
End If
Next I
B = Worksheets("Werte").Range(ZelleVBM).Value
Call FarbigeFelderZaehlen
End Sub
Holger schrieb am 08.09.2008 17:56:39:
Hallo sabine,
ich gehe davon aus, dass
1. die Spalte mit den "offen" die drittletzte des Bereichs sein soll, der durchsucht wird. Sonst musst du die Zeile "oc = ec - 2 'Offenspalte" so anpassen, dass in oc dann die Spaltennummer steht.
2. Zeilen, in denen die Hintergrundfarben mindestens einmal auftreten, als Ganzes und für alle Farben zusammen gezählt werden sollen. Ob die Colorindizees in Zeile "If a = 3 Or a = 4 Or a = 6 Then 'tatsächliche Farbindizees einsetzen" stimmen, musst du prüfen und ggf. anpassen. Grün könnte auch 43 sein. Du kannst eine Zelle mit der Hintergrundfarbe markieren und folgendes Makro laufenlassen, um den Index anzeigen zu lassen:
Sub Farbindex_anzeigen()
MsgBox Selection.Interior.ColorIndex
End Sub
3. das Ergebnis (Summe aller Zeilen mit entsprechenden Hintergrundfarben) in die erste freie Zelle der Spalte A ausgegeben werden soll. Ansonsten die Zeile "Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1) = b"
anpassen.
Wenn du Zellen zählen willst, lässt du Zeile "Exit For 'Wenn weggelassen, werden Zellen gezählt, so Zeilen" weg oder setzt einen Apostroph vorweg.
Sub Farbenauslesen()
For i = 1 To Cells(Rows.Count, 16).End(xlUp).Row
If Left(Cells(i, 16), 2) = "TI" Then Exit For
Next i
If i > Cells(Rows.Count, 16).End(xlUp).Row Then
MsgBox ("Kein TI gefunden!")
Exit Sub
End If
Ber = InputBox("Anfangsspalte:Endspalte" + vbCrLf + vbCrLf + "Beispiel: D:AC", "Suchbereich")
a = "abcdefghijklmnopqrstuvwxyz:"
For i = 1 To Len(a)
If InStr(a, Mid(LCase(Ber), i, 1)) = 0 Then
MsgBox "Falsches Eingabeformat!"
Exit Sub
End If
Next i
j = InStr(Ber, ":")
If j = 0 Then MsgBox "Falsches Eingabeformat!": Exit Sub
Set r = Range(Ber)
sc = r.Column 'erste Spalte
ec = r.Columns.Count + r.Column - 1 'letzte Spalte
oc = ec - 2 'Offenspalte
For i = 1 To Cells(Rows.Count, oc).End(xlUp).Row
If Cells(i, oc) = "offen" Then
For j = sc To ec
a = Cells(i, j).Interior.ColorIndex
If a = 3 Or a = 4 Or a = 6 Then 'tatsächliche Farbindizees einsetzen
b = b + 1
Exit For 'Wenn weggelassen, werden Zellen gezählt, so Zeilen
End If
Next j
End If
Next i
Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1) = b
End Sub
Gruß
Holger
sabine schrieb am 08.09.2008 11:43:53:
Hallo Holger,
also:
In Spalte 16 können verschiedene Buchstaben und Zahlenkombinationen stehen, wenn in einer die ersten beiden Buchstaben TI sind, dann soll das Makro anfangen zu zählen.
Dann soll das Makro in einem Bereich, durchlaufen und schauen, ob die hintergrundfarbe,gelb,rot oder grün vorhanden ist. Diesen Bereich soll man über zwei Spalten (Startspalte/Endspalte) eingeben können.
Wenn diese Hintergrundfarbe vorhanden ist, dann sollen in der 3. letzten Spalte geprüft werden, ob nicht das Wort offen enthalten ist. Wenn etwas anderes als offen in dieser Spalte zählt, darf diese Zeile gezählt werden.
Dies für alle benutzten Zeilen wiederholen und dann die Summe in einer Zeile ausgegeben werden.
offen wird immer kleingeschrieben, TI immer groß.
Ich hoffe das war jetzt verständlich.
Besten Dank schon mal.
Gruß
Sabine
|