tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
494
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    uwe44k Tutorials.de Gastzugang
    Hallo an alle,
    ich weiß nicht ob ich hier richtig bin, hab auch im Forum nicht gesucht weil ich neu hier bin und mich hier nicht auskenne.
    Meine Frage:
    Ich habe eine Tabelle (logisch - sonst wär ich nicht hier) in der ich Tageseingaben mache mit Werten.
    Also: Spalte A Spalte B
    01.01.09 - Wert 35
    02.01.09 - Wert 48
    bis zum 31.12.09

    Jetzt habe ich Monatsdiagramme die den Wert pro Tag farblich anzeigen.

    Meine Formel dazu:

    Privat Sub Worksheet_Change (ByVal Target As Range)

    Dim WertG, WertG_Vor, WertB, WertB-Vor, Zelle
    Zelle = Target.Adress(0, 0)

    'Monatsdiagramm:

    ActiveSheet.ChartObjects("Diagramm 1").Activate
    AktivateChart.Axes(xlValue).Select
    With AktivateChart.Axes(xlValue)
    .MinimumScale = WertG - 5
    .MaximumScale = WertG + 5
    CrossesAt = - 5
    AktivateChart.Axes(xlValue).Select
    Selction.TickLabels.AutoScale.Font
    With Selection.TickLabes.Font
    If WertG > WertG_Vor Then
    .ColorIndex = 3
    Elseif WertG < WertG_Vor Then
    .ColorIndex = 10
    Elseif WertG = WertG_Vor Then
    .ColorIndex = xlAutomatic
    End If
    End With
    End With

    End Sub

    Meine Frage jetzt dazu:
    Wenn ich die Formel in einem Modul kopiere und den Befehl "Monatsdiagramm" auskommentiere, warum Springt dann VBA nicht in den Modul?

    Ich hoffe ich hab es genügend erklärt, für Schreibfehler übernehm ich keine Haftung und vielen Dank für eure Antworten

    Gruß Uwe
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Wie rufst du deine prozedure auf?

    Hier noch den Code formatiert, damit es andere leichter haben um den Code zu lesen
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    Privat Sub Worksheet_Change (ByVal Target As Range)
     
        Dim WertG, WertG_Vor, WertB, WertB-Vor, Zelle
        Zelle = Target.Adress(0, 0)
        
        'Monatsdiagramm:
        
        ActiveSheet.ChartObjects("Diagramm 1").Activate
        AktivateChart.Axes(xlValue).Select
        With AktivateChart.Axes(xlValue)
            .MinimumScale = WertG - 5
            .MaximumScale = WertG + 5
            CrossesAt = - 5
            AktivateChart.Axes(xlValue).Select
            Selction.TickLabels.AutoScale.Font
            With Selection.TickLabes.Font
                If WertG > WertG_Vor Then
                    .ColorIndex = 3
                Elseif WertG < WertG_Vor Then
                    .ColorIndex = 10
                Elseif WertG = WertG_Vor Then
                    .ColorIndex = xlAutomatic
                End If
            End With
        End With
     
    End Sub
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    Hier der korrigierte Code (Schreibfehler von uwe44k):
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    Private Sub Worksheet_Change (ByVal Target As Range)
     
        Dim WertG, WertG_Vor, WertB, WertB_Vor, Zelle
        Zelle = Target.Adress(0, 0)
       
        'Monatsdiagramm:
       
        ActiveSheet.ChartObjects("Diagramm 1").Activate
        AktivateChart.Axes(xlValue).Select
        With AktivateChart.Axes(xlValue)
            .MinimumScale = WertG - 5
            .MaximumScale = WertG + 5
            CrossesAt = - 5
            AktivateChart.Axes(xlValue).Select
            Selction.TickLabels.AutoScale.Font
            With Selection.TickLabes.Font
                If WertG > WertG_Vor Then
                    .ColorIndex = 3
                Elseif WertG < WertG_Vor Then
                    .ColorIndex = 10
                Elseif WertG = WertG_Vor Then
                    .ColorIndex = xlAutomatic
                End If
            End With
        End With
     
    End Sub

    Ich denke aber, du hast hier wahrscheinlich einen Logikfehler. Du schreibst, dass du den Code in ein Modul kopierst, er gehört aber in den Codebereich der Tabelle (siehe Graphik). Erst dann greift VBA bei der Zellenänderung darauf zu.


    Der Doc!
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken VBA-Problem-vba.jpg  
     
    A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
    B: Die Scrollbar da rechts ist dir schon mal aufgefallen?

  4. #4
    uwe44k Tutorials.de Gastzugang
    Danke für eure Hilfe,

    der Code steht momentan im Codebereich der Tabelle. Er funktioniert auch bei Änderung der Zellen. Ich habe aber jetzt 12 Tabellen (von Jan - Dez) und wollte von Zeile 8 bis Zeile 25 in einem Modul schreiben und den Code in Modul mit Zeile 6 "Monatsdiagramm:" starten, was aber nicht funktioniert.

    Gruß Uwe
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Du musst deine Prozedure umbenammsen
    Code vb:
    1
    2
    3
    4
    5
    
    'alt:
    Private Sub Worksheet_Change (ByVal Target As Range)
     
    'neu:
    Private Sub myFunction (ByVal Target As Range)

    Anschliessend hinter deiner Tabelle die folgend sub setzen.
    Code vb:
    1
    2
    3
    
    Private Sub Worksheet_Change (ByVal Target As Range)
        Call myFunction(Target)
    End Sub
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    Uwe44k Tutorials.de Gastzugang
    Danke!

    Es Funktoniert )))
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 11.01.11, 21:40
  2. Antworten: 4
    Letzter Beitrag: 22.03.06, 20:50
  3. Antworten: 0
    Letzter Beitrag: 06.10.04, 14:03
  4. PROBLEM! Pinnacle 2 GB Begrenzung Windows 2000 DC 50 PROBLEM!
    Von hennym im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 6
    Letzter Beitrag: 17.09.03, 22:09
  5. Antworten: 6
    Letzter Beitrag: 13.06.02, 12:29