mit VBA Linie im Liniendiagramm rot wenn Wert negativ
#11
Hallo Helmut,

Vielen Dank für deine schnelle Antwort. Das habe ich soweit verstanden :17: .
Wenn ich in Spalte B4 z.B. die Formel = B16 zu stehen haben, übernimmt er zwar die Zahl in B4 aber das Makro erkennt dies nicht als Wert.
Deshalb werden dann keine Änderungen im Diagramm vorgenommen.

LG Mario
Top
#12
Hallo Mario,

das Makro würde die Änderungen wohl als Wert erkennen, aber Excel erkennt das nicht als Änderung im Sinne des Change-Ereignisses mit dem Target im Datenbereich.

Hier zwei Auszüge aus der Excel Onlinehilfe:
das ereignis Worksheet_Change tritt nur auf "wenn Zellen im Arbeitsblatt durch den Benutzer oder durch einen externen Link geändert werden".
"Wenn Zellen während einer Neuberechnung geändert werden. Verwenden Sie das Ereignis Calculate."

Du hast jetzt zwei (oder mehr) Möglichkeiten den code anzupassen.

a) Falls die berechneten Werte von manuellen Eingabe im gleichen Tabellenblatt abhängen, könntest du die Code-Zeilen mit der Targetabfragen löschen.
Hierdurch werden die Werte bei jeder manuellen Änderung in dem Arbeitsblatt neu ermittelt.

b) Falls die berechneten Werte von Werten in anderenTabellenblättern abhängen, könntest du die Code-Zeilen zusätzlich in ein Worksheet_Calculate Makro kopieren. Auch hierbei bitte die zwei Zeile mit der Targetabfragen löschen, da das Calculate-Makro keinen Target besitzt.
Hierdurch werden die Werte bei jeder manuellen Änderung im Datenbereich und bei jeder Berechnung im Arbeitsblatt neu ermittelt.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#13
Hallo Helmut,

danke für deine super Hilfe  Thumbsupsmileyanim .
Ich habe dank dir wieder eine Menge dazugelernt. Super das es dieses Forum gibt!

Ich habe es dank deiner Hilfe jetzt wie folgt gelöst:

Code:
Sub Worksheet_Calculate()

Dim i As Integer

For i = 3 To 12

  Application.EnableEvents = False

If Cells(i, 2) > Cells(i, 5) Then
  Cells(i, 3) = Cells(i, 2)
  Cells(i, 4) = ""
 
Else

  Cells(i, 4) = Cells(i, 2)
  Cells(i, 3) = ""
   
End If
 
  Next i
 
  Application.EnableEvents = True
 
End Sub

Danke und VG 
Mario
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste