Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
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

Zelle in Farbe bei Sicherung

Zelle in Farbe bei Sicherung
24.04.2023 15:30:48
chris58

Hallo !
Ich nehme dieses Makro um Daten die ich täglich einpflege zu sichern um in der Zukunft darauf zugreifen zu können. Da funktioniert bestens.
Nun wäre es hilfreich auch die Textfarbe beim sichern zu übernehmen, Gerade bei der Sicherung der Spalte C14. Diese ist manchmal in schwarzem Text und hin und wieder in rotem Text. Gibts dafür eine Möglichkeit das Makro dahingehend zu ändern um dies zu bewerkstelligen ?
Danke im voraus
chris58

Sub ProtokollSichern()
Dim i As Long
Const NewConstSheet As String = "Berechnung"
Dim bfound As Boolean
Dim sMerk As String
Dim sMaxZeile As Long
Dim TB As Worksheet

Application.ScreenUpdating = False

'Prüfen ob Tabelle NewConstSheet schon angelegt ist
For i = 1 To ActiveWorkbook.Sheets.Count
If ActiveWorkbook.Sheets(i).Name = NewConstSheet Then
bfound = True
Exit For
End If
Next i

'wenn nicht dann anlegen
If bfound = False Then
sMerk = ActiveWorkbook.ActiveSheet.Name
ActiveWorkbook.Sheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveWorkbook.ActiveSheet.Name = NewConstSheet
ActiveWorkbook.Sheets(sMerk).Activate
End If

Set TB = ActiveWorkbook.Sheets(NewConstSheet)

'nächste leere Zeile ermitteln
sMaxZeile = TB.Cells(TB.Rows.Count, 1).End(xlUp).Row + 1

'Daten in neue Tabelle übertragen
TB.Cells(sMaxZeile, 1) = ActiveWorkbook.ActiveSheet.Range("C7")
TB.Cells(sMaxZeile, 2) = ActiveWorkbook.ActiveSheet.Range("B7")
TB.Cells(sMaxZeile, 3) = ActiveWorkbook.ActiveSheet.Range("C6")
TB.Cells(sMaxZeile, 4) = ActiveWorkbook.ActiveSheet.Range("C11")
TB.Cells(sMaxZeile, 5) = ActiveWorkbook.ActiveSheet.Range("C12")
TB.Cells(sMaxZeile, 6) = ActiveWorkbook.ActiveSheet.Range("C13")
TB.Cells(sMaxZeile, 7) = ActiveWorkbook.ActiveSheet.Range("C14")
TB.Cells(sMaxZeile, 9) = ActiveWorkbook.ActiveSheet.Range("D7")


' Formel in Spalte H
TB.Cells(sMaxZeile, 8).FormulaR1C1 = "=(RC3-R[-1]C3)/(RC1-R[-1]C1)"

Application.ScreenUpdating = True
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle in Farbe bei Sicherung
24.04.2023 16:49:13
Rudi Maintaire
Hallo,
kopiere die Zellen statt nur den Wert zuzuweisen.
Range("C14").copy TB.Cells(sMaxZeile, 7)

ActiveWorkbook.ActiveSheet kannst du dir sparen. Wenn nichts angegeben wird, beziehen sich Befehle immer auf das aktive Workbook/ Blatt.

Gruß
Rudi


AW: Zelle in Farbe bei Sicherung
25.04.2023 11:36:50
chris58
Hallo Rudi !
Ich habe das probiert, jedoch ist folgendes passiert. In diesem Feld wird ein Vergleich errechnet. Dieser bezieht sich auf den Gesamtjahresverbrauch und wird duch Hochrechnung mit einr roten Zahl bei überschreitung und einer grünen Zahl bei Unterschreitung ausgewiesen. Siehe Makro unten. Nun wird, wenn ich dieses Feld einfach nach unten kopiere die rote Zahl in Grün dargestellt. Bei Rot weiß ich es nicht, dürfte aber auch umgekehrt sein.
Ebenfalls ist wird der Rahmen von diesem Feld nach unten kopiert.
Nun denke ich, wäre es nicht besser bei dem Makro "Vergleich" die Zahl die dort dann ausgerechnet wird, mit einem -MINUS oder einem +PLUS zu versehen, anstatt ROT oder GRÜN. Damit wäre das ganze erledigt.
Falls du eine Idee hast, DANKE
lg chris

Sub Vergleich()
Dim Unterschied As Double
Unterschied = Cells(5, 3) - Cells(12, 3)
  Cells(14, 3) = Abs(Unterschied)
  Cells(14, 3).Font.Color = IIf(Unterschied  0, vbRed, vbGreen)
End Sub


Anzeige
AW: Zelle in Farbe bei Sicherung
25.04.2023 14:01:17
chris58
Hallo Rudi !
Ich habe das probiert, jedoch ist folgendes passiert. In diesem Feld wird ein Vergleich errechnet. Dieser bezieht sich auf den Gesamtjahresverbrauch und wird duch Hochrechnung mit einr roten Zahl bei überschreitung und einer grünen Zahl bei Unterschreitung ausgewiesen. Siehe Makro unten. Nun wird, wenn ich dieses Feld einfach nach unten kopiere die rote Zahl in Grün dargestellt. Bei Rot weiß ich es nicht, dürfte aber auch umgekehrt sein.
Ebenfalls ist wird der Rahmen von diesem Feld nach unten kopiert.
Nun denke ich, wäre es nicht besser bei dem Makro "Vergleich" die Zahl die dort dann ausgerechnet wird, mit einem -MINUS oder einem +PLUS zu versehen, anstatt ROT oder GRÜN. Damit wäre das ganze erledigt.
Falls du eine Idee hast, DANKE
lg chris

Sub Vergleich()
Dim Unterschied As Double
Unterschied = Cells(5, 3) - Cells(12, 3)
  Cells(14, 3) = Abs(Unterschied)
  Cells(14, 3).Font.Color = IIf(Unterschied  0, vbRed, vbGreen)
End Sub


Anzeige
AW: Zelle in Farbe bei Sicherung
25.04.2023 15:58:53
Rudi Maintaire
Hallo,
durch Abs() killst du das Vorzeichen.

Gruß
Rudi


AW: Zelle in Farbe bei Sicherung
25.04.2023 17:02:18
chris58
Hallo Rudi !
Tja, ich habe das so eingegeben. Doch da rührt sich eigentlicht rein gar nichts.
Ich hab diese Zeile rausgenommen...... Cells(14, 3) = Abs(Unterschied)
oder meinst du da was anderes...............
chris58

Sub Vergleich()
Dim Unterschied As Double
Unterschied = Cells(5, 3) - Cells(12, 3)

  Cells(14, 3).Font.Color = IIf(Unterschied  0, vbRed, vbGreen)
End Sub


AW: Zelle in Farbe bei Sicherung
26.04.2023 19:50:42
Yal
Noch ein Gedicht... Schriftfarbe ist grundsätzlich grün, aber durch bedingte Formatierung werden die negative Zahlen rot übermalt.

Sub ProtokollSichern()
Dim i As Long
Dim Q

    Application.ScreenUpdating = False
    With Blatt_holen(ActiveWorkbook, "Berechnung")
'letzt befüllte Zeile ermitteln und auf die näcshte Daten übertragen
        With .Cells(TB.Rows.Count, 1).End(xlUp).Row
            For Each Q In Split("C7 B7 C6 C11 C12 C13 C14 D7")
                .Offset(1, i) = Range(Q)
                i = i + 1
            Next
            .Offset(1, 8).FormulaR1C1 = "=(RC3-R[-1]C3)/(RC1-R[-1]C1)"
            With .Range("A1:H1")
                .Font.Color = -11489280 'Schriftfarbe grün
                Set Q = .FormatConditions.Add(Type:=xlExpression, Formula1:="=(A10)") 'wenn negativ
                Q.Font.Color = -16776961 'dann rot
            End With
        End With
    End With
    Application.ScreenUpdating = True
End Sub

Private Function Blatt_holen(wb As Workbook, Blattname As String) As Worksheet
    On Error Resume Next 'gibt nur von hier bis Ende dieses Sub/Function
    Set Blatt_holen = wb.Worksheets(Blattname) 'wenn es nicht existiert, verursacht es eine Fehler, die ignoriert wird
    If Blatt_holen Is Nothing Then Set ws = ws.Worksheets(wb.workshets.Count) 'wenn nichts gefunden, dann herstellen
End Function
VG
Yal


Anzeige
AW: Zelle in Farbe bei Sicherung
27.04.2023 12:33:24
chris58
Hallo !
Da ich nicht weiterkomme und keine Lösung in VBA bisher gefunden habe und ich nicht versiert genug bin um dies selber zu lösen, habe ich eine Formel zusammengestickt die die Lösung wäre, wenn die Nachkomma nur auf 2 Stellen gerundet wären. Doch auch da stoße ich auf mein Wissen, das in diesr Hinsicht nicht vorhanden ist.
Entweder geht das mit diesem Makro, wo die Zahlen nicht in Rot oder Grün sind, sondern mit einem Minus und einem Plus vor der berechneten Zahl.
Sub Vergleich()
Dim Unterschied As Double
Unterschied = Cells(5, 3) - Cells(12, 3)
  Cells(14, 3) = Abs(Unterschied)
  Cells(14, 3).Font.Color = IIf(Unterschied  0, vbRed, vbGreen)
End Sub
oder, bei dieser zusammengeflickten Formel, wenn diese nur 2 Nachkomme hätte:
=WENN(C12-C5>0;"+";"-")&" "&C5-C12

Bevorzugen würde ich ja die Lösung mit dem Makro, aber ich würde auch mit der Formel zufrieden sein.
Wie ihr seht, ich bin kein Profi, weit dvon entfernt. Ich bemühe mich ja um eine Lösung, nur ................naja
Danke jednefalls fürs Lesen
chris


Anzeige
AW: Zelle in Farbe bei Sicherung
27.04.2023 18:35:43
Yal
Hallo Chris,

Lese deine Formel auf Deutsch und laut (ja, Du musst dich selbst hören, weil so holst Du deinen Gehirn raus aus dem programmiertechnischen Tunnelblick, oder anders gesagt, nur Bäume aber keine Wald sehen):
wenn die Wert in C12 minus C5 grösser als null ist (was übrigens C12 grösser als C5 gleich ist), dann setze den Zeichen plus, wenn nicht, minus, dann danach C5 minus C12 (also die Gegenwert von C12 minus C5)
=WENN(C12-C5>0;"+";"-")&" "&C5-C12
was eigentlich so zu schreiben wäre: 
=WENN(C12>C5;"+";"-")&" "&C5-C12
aber so zu kürzen:
=TEXT (C12-C5; "+ 0,00;- 0,00")
Lösung (entspricht dein Code, aber nicht deine Formel):
Sub Vergleich()
    With Range("C14") 'das ist die Zelle, worauf alles passieren soll (alles was bis zu End With mit einem Punkt anfängt bezieht sich auf diesem With)
        .Value = Range("C5").Value - Range("C12").Value 'die Differenz in C14 ablegen
        .Font.Color = IIf(.Value  0, vbRed, vbGreen) ' Farbe nach Vorzeichen setzen
        .Value = Abs(.Value) 'Vorzeichen vernichten
    End With
End Sub
Du hast mehrmals über "deine Lösung" gesprochen, die nicht funktioniert, aber fast nirgendwo und auch nicht vollständig, was die erwartete ergebnis wäre. Es ist für ein Automechaniker auch schwer das Problem des Autos zu verstehen, wenn er nur eine gebogene schraube sehen darf.

VG
Yal


Anzeige
AW: Zelle in Farbe bei Sicherung
27.04.2023 19:23:48
chris58
Danke, Danke, Danke
chris58

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige