vb.net Excel Makro funktioniert nicht wie gewünscht?

Neugier2022  20.10.2023, 13:00

Würdest Du bitte nochmal präzisieren, was das Macro tun soll?

Kgrimm 
Fragesteller
 20.10.2023, 13:01

Es soll die gesamte Spalte Rot markieren, wenn eine Zelle der Spalte einen Wert enthält =25 oder grösser.

Dabei soll es alle Spalten & alle Zellen Prüfen.

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ungetestet und auf die Schnelle...

Sub SpaltenMarkieren()

'Variablen deklarieren
Dim Spalte As Integer
Dim Zelle As Range
Dim Wert As Double

'Zellen in allen Spalten durchlaufen
For Spalte = 1 To ActiveSheet.UsedRange.Columns.Count

'Zelle in aktueller Spalte suchen
Set Zelle = ActiveSheet.UsedRange.Columns(Spalte).Find(What:="", LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext)

'Wenn Zelle gefunden wurde
If Not Zelle Is Nothing Then

'Wert der Zelle auslesen
Wert = Zelle.Value

'Wenn Wert größer oder gleich 25 ist, dann Spalte markieren
If Wert >= 25 Then

'Hintergrundfarbe der Spalte auf rot setzen
ActiveSheet.Columns(Spalte).Interior.Color = RGB(255, 0, 0)

End If
End If
Next Spalte
End Sub
Kgrimm 
Fragesteller
 20.10.2023, 16:12

Vielen Dank! ich glaube jedoch hier ist das Problem, das die Bedingung der 2ten If Schleife niemals erfüllt wird, weshalb genau kann ich "noch" nicht sagen.

0
Kgrimm 
Fragesteller
 20.10.2023, 16:15

Letztendlich habe ich geschafft mit deinem neuen Ansatz, den Code dort anzupassen und das Makro funktionsfähig zu kriegen:

Sub SpaltenMarkieren()

  'Variablen deklarieren

  Dim Spalte As Integer

  Dim Zelle As Range

  Dim Wert As Double

  'Zellen in allen Spalten durchlaufen

  For Spalte = 1 To ActiveSheet.UsedRange.Columns.Count

    'Schleife durch die Zellen der Spalte

    For Each Zelle In ActiveSheet.UsedRange.Columns(Spalte).Cells

      'Wert der Zelle auslesen

      Wert = Zelle.Value

      'Wenn Wert größer oder gleich 25 ist, dann Spalte markieren

      If Wert >= 25 Then

        'Hintergrundfarbe der Spalte auf rot setzen

        ActiveSheet.Columns(Spalte).Interior.Color = RGB(255, 0, 0)

        Exit For 'Wenn eine Zelle gefunden wurde, die die Bedingung erfüllt, die Schleife beenden

      End If

    Next Zelle

  Next Spalte

End Sub

Dieser Code macht nun genau was er soll.

Vielen Dank für die Hilfe.

1

Lösung für den VBA Fall sind ja schon vorhanden.
Sofern die Spalte wegen einer "25" rot werden soll, dann geht dies aber viel einfacher mit bedingter Formatierung.