HERBERS Excel-Forum - das Archiv

Thema: VBA Makro beim Öffnen von Excel -> starten

VBA Makro beim Öffnen von Excel -> starten
Erik
Guten Morgen zusammen.

Ich habe dieses Makro:

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("AG:AG")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Value > 3 Then
Target.Cells(1, -22) = "Fzg. abge.?"
Else
Target.Offset(0, 1).ClearContents
End If

End Sub


das bei der Eingabe in Spalte AG genau das macht was es soll.
Allerdings befindet sich ein AG eine Formel, die die Werte 1-5 aus einer Matrix über SVERWEIS bekommt.

Das Makro macht den Eintrag aber nur bei manueller Eingabe.
Wie muss das Makro aussehen damit es beim Starten von Excel die Spalte AG prüft und dann ersetzt?

Vielen Dank und Gruß
Erik

AW: VBA Makro beim Öffnen von Excel -> starten
Yal
Hallo Erik,

Worksheet_Change reagiert, wie der Name es hindeutet, auf Änderung auf dem Blatt, und zwar nur Eingabe, sei es per Hand oder per Paste (Copy-Paste). Ein neue Ergebnis durch eine Formel, die nicht geändert wurde, ist keine Change im Excel-Sinne.

Du musst die Paramter vom SVerweis anschauen und genau diese Quellzellen unter Beobachtung stellen.

Da Du auf die gesamte Spalte AG dieselbe Verhalten erwartet, kann man davon ausgehen, dass dein Excel sauber nach Spalten orgnaisiert ist. Daher sollte in dem SVerweis eine Quelle aus der aktuellen Zeile aber immer dieselbe Spalte zu finden sein.

Vielleicht kannst Du kommunizieren, was in deinem SVerweis steht.

VG
Yal
AW: VBA Makro beim Öffnen von Excel -> starten
Erik
Hallo Yal,

habe etwas am Makro gebastelt und nun diese Änderung.
Die Abfrage soll aber größer 2 kleiner 5 sein.
Wie muss ich die Zeile abändern?

Sub pruefen()



Dim i As Long
Application.ScreenUpdating = False
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(i, 1) > 2 Then Cells(i, 2) = Cells(i, 2) & "prüfen!"
Next i
Application.ScreenUpdating = True



End Sub


Vielen Dank und Gruß
Erik
AW: VBA Makro beim Öffnen von Excel -> starten
Yal
Hallo Erik,

das Verfahren "Step -1" ist nur notwendig, wenn Zeilen/Spalten gelöscht werden.

Solche einfache Fragen kannst Du auch chatGPT stellen. Da sind die Antwort schon belastbar.

(Achte auf einem sauberen Einrücken des Codes. Beim Lesen viel wichtiger als leere Zeilen dazwischen)
Sub pruefen()

Dim Z As Range 'Z wie Zelle

Application.ScreenUpdating = False
For Each Z In Range(Range("A1"), Cells(Rows.Count, 1).End(xlUp))
If Z.Value > 2 And Z.Value < 5 Then Z.Offset(0, 1).Value = Z.Offset(0, 1).Value & " prüfen!"
'alternativ
'If Z.Value > 2 And Z.Value < 5 Then Z.Offset(0, 1).Interior.ColorIndex = 3
Next i
Application.ScreenUpdating = True
End Sub


Ich habe eine Alternativ eingebaut: Zelle werden rot. Nach Prüfung kann man die ganze Zeile Markieren und Farbe wergwerfen.

Wenn die Reihenfolge der Datensätze (=Zeile) nicht relevant ist, oder aufgrund einer Merkmale die originale Reihenfolge wiederherstellbar ist, kannst Du die Daten sortieren. Dann brauchst Du keine Makro.

VG
Yal