Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
684to688
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
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Worksheet_Calculate - Ereigniss

Worksheet_Calculate - Ereigniss
20.10.2005 14:19:09
Mola
Hallo,
ich versuche gerade verzeifelt dieses Ereignis für mich nutzbar zu machen.
Ich habe ich in G30 einen Sverweis stehen welcher sich auf E30 bezieht.
Mein Makro läuft derzeit nur per Worksheet_Change(ByVal Target As Range)...also ich muss immer in G30 reingehen und Enter drücken damit etwas passiert....ich will aber erreichen, dass sobald ich das Suchkriterium (E30) verändere das meine entsprechende Prozedur ausgeführt wird.
Frage jetzt ist...wie baue ich die Calculate Prozedur auf?
Kann mir jemand hier mehr Infos zu geben?
Vielen Dank!
Mola

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Calculate - Ereigniss
20.10.2005 14:58:03
IngGi
Hallo Mola,
wozu ein Calculate-Ereignis? Wenn du die Zelle E30 veränderst, tritt doch ein Change-Ereignis ein. Ich vermute mal, dass in deinem Makro geprüft wird, ob die Änderung die Zelle G30 betrifft, also ob Target.Address den Wert $G$30 hat. Und wenn nicht, dann wird das Makro nicht weiter ausgeführt. In diesem Fall musst du diese Prüfung einfach auf die Zelle E30 abändern.
Gruß Ingolf
AW: Worksheet_Calculate - Ereigniss
20.10.2005 15:13:56
Mola
Hallo Ingolf,
leider nicht so einfach....
mein code schaut so aus:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sr As Shape
Dim Reihe As Long
If Target.Count = 1 And Target.Column = 7 And Target.Row >= 30 Then
Reihe = Target.Row
For Each sr In ActiveSheet.Shapes
sr.Select
If sr.AutoShapeType = msoShapeOval <> 0 And sr.TopLeftCell.Row = Reihe Then
If LCase(Target.Value) = "gesperrt" Then
sr.Fill.ForeColor.SchemeColor = 2
ElseIf LCase(Target.Value) = "freigegeben" Then
sr.Fill.ForeColor.SchemeColor = 3
ElseIf LCase(Target.Value) = "ungeprüft" Then
sr.Fill.ForeColor.SchemeColor = 13
End If
End If
Next sr
End If
End Sub

In Spalte 7 befindet sich ab Zeile 30 ein Sverweis der sich auf Eingabe in Spalte E bezieht. So wie der Code jetzt ist muss ich in die Zellen G30 reingehen und Enter drücken bevor die die Farbe in den Zellen anpasst....ich wollte es aber möglichst automatisch haben...
War das verständlich?
Mfg
Mola
Anzeige
AW: Worksheet_Calculate - Ereigniss
20.10.2005 22:55:29
IngGi
Hallo Mola,
im Wesentlichen ist es ja schon so, wie ich vermutet habe. Was mich noch ein bisschen verunsichert ist, dass in dem Makro auf Target.Row >= 30 und nicht =30 abgeprüft wird. Das Makro würde also auch bei Veränderungen in Zeilen > 30 laufen. Wenn du allerdings sagst, du müsstest in Zelle G30 gehen und diese nochmal mit F2 und Eingabe abschliessen, damit das Makro läuft, kann ich wohl davon ausgehen, dass die gewünschte Änderung immer die Zelle G30 betrifft und nicht auch z.B. G42 betreffen kann. In diesem Fall müsste das Makro in der folgenden Variante nach deinen Wünschen laufen.
Ich habe einfach, wie bei meiner vorigen Antwort schon angedeutet, die Prüfung auf Zelle E30 statt G30 geändert (Target.Column=5 statt =7). Zusätzlich musste ich dann aber auch noch Target.Value auf Target.Offset(0, 2).Value abändern.
Passt das so oder liege ich daneben?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sr As Shape
Dim Reihe As Long
If Target.Count = 1 And Target.Column = 5 And Target.Row >= 30 Then
Reihe = Target.Row
For Each sr In ActiveSheet.Shapes
sr.Select
If sr.AutoShapeType = msoShapeOval <> 0 And sr.TopLeftCell.Row = Reihe Then
If LCase(Target.Offset(0, 2).Value) = "gesperrt" Then
sr.Fill.ForeColor.SchemeColor = 2
ElseIf LCase(Target.Offset(0, 2).Value) = "freigegeben" Then
sr.Fill.ForeColor.SchemeColor = 3
ElseIf LCase(Target.Offset(0, 2).Value) = "ungeprüft" Then
sr.Fill.ForeColor.SchemeColor = 13
End If
End If
Next sr
End If
End Sub
Gruß Ingolf
Anzeige
Super!!!!
21.10.2005 09:09:21
Mola
Hey Ingolf,
sehr genial - funktioniert genauso wie gewünscht. Du hast mir mein Wochenende gerettet. Super!!! Damit kann ich jetzt erstmal weitermachen!
Also vielen 1000 Dank für Deine Geduld + Zeit + Mühe! Ist echt klasse!
Gruß
Mola

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige