Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA excel Makro If-Schleife kürzen,if>30,rot mark

Forumthread: VBA excel Makro If-Schleife kürzen,if>30,rot mark

VBA excel Makro If-Schleife kürzen,if>30,rot mark
09.12.2014 11:38:16
braun
Guten Morgen,
ich habe folgende zwei Makros erstellt:
Sub Makro15_Differenzen_markieren()
'Markiert Zellen rot, wenn Differenzen > 30
ActiveSheet.Select
'Startzeile
startzeile = 3
'Spalte die geprüft wird
Spalte = 83
startzeile2 = 3
Letzte_Zeile = Range(Cells(65536, Spalte), Cells(65536, Spalte)).End(xlUp).Row
For i = startzeile To Letzte_Zeile
If ActiveSheet.Cells(i, Spalte) >= 30 And ActiveSheet.Cells(i, Spalte)  "" Then
ActiveSheet.Range("CE" & i).Select
Selection.Interior.ColorIndex = 3
Else
End If
Next
End Sub

Sub Makro16_Differenzen_markieren()
'Markiert Zellen rot, wenn Differenzen > 30
ActiveSheet.Select
'Startzeile
startzeile = 3
'Spalte die geprüft wird
Spalte2 = 87
startzeile2 = 3
Letzte_Zeile = Range(Cells(65536, Spalte2), Cells(65536, Spalte2)).End(xlUp).Row
For i = startzeile To Letzte_Zeile
If ActiveSheet.Cells(i, Spalte2) >= 30 And ActiveSheet.Cells(i, Spalte2)  "" Then
ActiveSheet.Range("CI" & i).Select
Selection.Interior.ColorIndex = 3
Else
End If
Next
End Sub
Insgesamt sind es vier dieser Sorte, bei denen ich nur die zu prüfenden Spalten abgeändert habe. Kann man diese Codes evtl kombinieren?
Die verschiedenen Spalten sollen durchsucht werden, und wenn ein Wert >=30 ist, rot markiert werden.
Vielen Dank im Voraus

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA excel Makro If-Schleife kürzen,if>30,rot mark
09.12.2014 12:08:24
yummi
Hallo braun,
kannst du in einer zusammen fassen

Sub alle_Differenzen_markieren()
'Markiert Zellen rot, wenn Differenzen > 30
'Startzeile
startzeile = 3
'Spalte die geprüft wird
Spalte2 = 87
startzeile2 = 3
Letzte_Zeile = Range(Cells(65536, Spalte2), Cells(65536, Spalte2)).End(xlUp).Row
For i = startzeile To Letzte_Zeile
If ActiveSheet.Cells(i, 87) >= 30 And ActiveSheet.Cells(i, 87)  "" Then
ActiveSheet.Range("CI" & i).Interior.ColorIndex = 3
End If
If ActiveSheet.Cells(i, 83) >= 30 And ActiveSheet.Cells(i, 83)  "" Then
ActiveSheet.Range("CE" & i).Interior.ColorIndex = 3
end if
.....und weitere
Next
End Sub
wenn deine Spalten einen bestimmten Abstand haben kannst Du anstatt für jede Spalte eine If abfrage zu nehmen auch eine 2. For schleife in der bestehenden nehmen, die dann von 1. relevanter Spalte bis letzter mit entsprechender Schrittweite läuft.
Wenn unrterschiedliche Schrittweite kannst du deine relevanten Spalten in ein Array laden und durch dieses durchlaufen in der internen Schleife und aal spalte den Wert aus dem Array einsetzen.
Sollten genug anregungen sein, dein Code zu optimieren ;-)
Axo das select habe ich mal rausoptimiert, das brauchst du nicht.
Gruß
yummi

Anzeige
VBA excel Makro If-Schleife kürzen,if>30,rot mark
09.12.2014 12:38:05
braun
Vielen Dank, das probiere ich gleich aus :)

VBA excel Makro If-Schleife kürzen,if>30,rot mark
09.12.2014 14:00:21
braun
Ich habe eben den Code ausprobiert, das Problem ist, dass
Letzte_Zeile = Range(Cells(65536, Spalte2), Cells(65536, Spalte2)).End(xlUp).Row

hier immer nur auf die letzte Zeile in Spalte2 geschaut wird.
Also müsste ich doch mehrere For-Schleifen in ein Makro packen oder?
Geht das überhaupt?
Viele Grüße

Anzeige
AW: VBA excel Makro If-Schleife kürzen,if>30,rot mark
09.12.2014 14:19:13
yummi
Hi,
sry übersehen, dann nimm
Letzte_Zeile = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row 'Sheets(1) anpassen
dann findet er dir die letzte benutze Zelle egal in welcher Spalte
Gruß
yummi

AW: VBA excel Makro If-Schleife kürzen,if>30,rot mark
09.12.2014 16:00:25
Rudi
Hallo,
eine Variante
Sub Aufruf()
Differenzen_markieren 83
Differenzen_markieren 87
'etc
End Sub
Sub Differenzen_markieren(lSpalte As Long)
'Markiert Zellen rot, wenn Differenzen > 30
Dim LetzteZeile As Long, myRange As Range
Const StartZeile As Long = 3
With ActiveSheet
LetzteZeile = Cells(Rows.Count, lSpalte).End(xlUp).Row
For Each myRange In .Range(.Cells(StartZeile, lSpalte), .Cells(LetzteZeile, lSpalte))
If myRange >= 30 Then
myRange.ColorIndex = 3
End If
Next myRange
End With
End Sub
Gruß
Rudi

Anzeige
VBA excel Makro If-Schleife kürzen,if>30,rot mark
10.12.2014 09:48:05
braun
Vielen Dank an alle :)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige