Anzeige
Archiv - Navigation
1396to1400
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

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

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

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

Anzeige
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

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

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige