• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Grafiek maken via userform.

Status
Niet open voor verdere reacties.

danny147

Terugkerende gebruiker
Lid geworden
29 apr 2007
Berichten
4.744
Beste, ;)

Kan ik een grafiek maken met gegevens die uit de UserForm komen ?

Ik zou een Blokgrafiek willen met de 5 laatste vervangingen van kabels met een lijn die het gemiddelde geeft.
Onderaan de datums, links aantal dagen.

Vb.

Datum 1 = TextBox1.Value
Datum 2 = TextBox2.Value
Datum 3 = TextBox3.Value
Datum 4 = TextBox4.Value
Datum 5 = TextBox5.Value

Gemiddelde = TextBox 6.Value

Groetjes Danny. :thumb:
 

Bijlagen

  • Grafiek maken.jpg
    Grafiek maken.jpg
    102,2 KB · Weergaven: 108
Een eerste aanzet, met "huis, tuin, en keuken-VBA"
 

Bijlagen

  • UserformNaarGrafiek.xls
    37,5 KB · Weergaven: 125
Beste Wher, ;)

De eerste aanzet ziet er niet slecht uit :D
Kan ook het aantal dagen vermeld worden in de staafbalk ?

Graag zou ik het gemiddelde willen zien in een horizontale lijn.
Het gemiddelde is te vinden via TextBox6

Groetjes Danny. :thumb:
 
Sorry Danny,

Ik zit hier aan de limiet van mijn VBA-kunde, ik vond het al flink van mezelf dat ik zover geraakt ben.
 
Beste Wher, ;)

Bedankt voor je inbrenging.
Het aantal dagen toe te voegen heb ik gevonden via de macrorecorder.

Code:
ActiveChart.SeriesCollection(1).ApplyDataLabels

Nu nog een lijn die het gemiddelde aangeeft dat in TextBox6 staat.

Groetjes Danny. :thumb:
 
Je zou in Excel de type van de grafiek aan kunnen passen.
Vervolgens kies je een bereik dat als bron dient voor het gemiddelde en je schrijft de waarde van textbox6 naar dat bereik.
Je hebt dan ook geen aanvullende VBA nodig.

Met vriendelijke groet,


Roncancio
 
Beste Roncancio, ;)

Heb geprobeerd de gegevens allemaal naar tabblad "Grafiek" te importeren via code.

Code:
Private Sub CommandButton1_Click()
    With Worksheets("Grafiek")
            .[AA3] = DateValue(TextBox1.Value)
            .[AA4] = DateValue(TextBox2.Value)
            .[AA5] = DateValue(TextBox3.Value)
            .[AA6] = DateValue(TextBox4.Value)
            .[AA7] = DateValue(TextBox5.Value)
            .[AB3] = DateValue(TextBox2.Value) - DateValue(TextBox1.Value) * 1
            .[AB4] = DateValue(TextBox3.Value) - DateValue(TextBox2.Value) * 1
            .[AB5] = DateValue(TextBox4.Value) - DateValue(TextBox3.Value) * 1
            .[AB6] = DateValue(TextBox5.Value) - DateValue(TextBox4.Value) * 1
            .[AB7] = Date - DateValue(TextBox5.Value) * 1
            .[AC3:AC7] = TextBox7
            
    End With
End Sub

Geeft dit als resultaat in Excel/

16-6-2011 = Vandaag()

Datum--------Aantal dagen--Gemiddelde
14-5-2004--------348-----------295
27-4-2005--------258-----------295
10-1-2006--------314-----------295
20-11-2006-------261-----------295
8-8-2007--------1407-----------295

Eenmaal dat de grafiek gemaakt is moet hij zijn eigen aanpassen aan de gegevens die veranderen.

Het probleem is nu dat ik geen deftige grafiek kan maken met deze gegevens.

In bijlage 2 bestandjes wat het ongeveer moet zijn (grafiek bijna goed) met zelf ingevoerde cijfers, alleen zijn de datums niet correct met wat het moet zijn.

Het andere bestandje (grafief niet goed) met cijfers die via de code komen, maar daar krijg ik geen kop noch staart aan.
Datums zijn er te veel en niet correct

Groetjes Danny. :thumb:
 

Bijlagen

  • Grafiek niet goed.xls
    31,5 KB · Weergaven: 32
  • Grafiek bijna goed.xls
    34,5 KB · Weergaven: 65
Ik heb de grafiek wat aangepast.
Kan je hiermee uit de voeten?

Met vriendelijke groet,


Roncancio
 

Bijlagen

  • Grafiek.xls
    32,5 KB · Weergaven: 123
Beste Roncancio, ;)

Bedankt, dit ziet er prima uit.

Enkel nog verwerken in mijn bestandje.

Groetjes Danny. :thumb:
 
Beste, ;)

Nog één probleempje is opgedoken.

De volgende code geeft de gegevens weer voor het aanmaken van mijn grafiek.
Echter geeft het rode gedeelte een datum weer in plaats van het verschil in dagen.

Ook kan het zijn dat er maar 1 datum weergegeven wordt en moet dus TextBox1 tem 4 gecontroleerd worden of de inhoud leeg is.
Dus kunnen er ook geen datums van elkaar afgetrokken worden.

Code:
Private Sub CommandButton1_Click()
    With Worksheets("Grafiek")
            .[AA3] = DateValue(TextBox1.Value)
            .[AA4] = DateValue(TextBox2.Value)
            .[AA5] = DateValue(TextBox3.Value)
            .[AA6] = DateValue(TextBox4.Value)
            .[AA7] = DateValue(TextBox5.Value)
[COLOR="red"]            .[AB3] = DateValue(TextBox2.Value) - DateValue(TextBox1.Value) * 1
            .[AB4] = DateValue(TextBox3.Value) - DateValue(TextBox2.Value) * 1
            .[AB5] = DateValue(TextBox4.Value) - DateValue(TextBox3.Value) * 1
            .[AB6] = DateValue(TextBox5.Value) - DateValue(TextBox4.Value) * 1
            .[AB7] = Date - DateValue(TextBox5.Value) * 1[/COLOR]   
         .[AC3:AC7] = TextBox7
            
    End With
End Sub
Groetjes Danny. :thumb:
 
Laatst bewerkt:
Ik zou verwijzen naar de cellen in het worksheet.
Als vervanging van de rode regels:

Code:
            For lRij = 3 To 6
                With Range("AA" & lRij)
                    If .Value <> "" Then .Offset(0, 1).Value = .Offset(1, 0).Value - .Value
                End With
            Next

Met vriendelijke groet,


Roncancio
 
Beste Roncancio, ;)

Heb het op de volgende manier opgelost:
Gewoon de datums overgenomen van de TextBoxen in de Userform en dan met formules het aantal dagen aangepast in Excel.

Code:
Private Sub CommandButton1_Click()

    With Worksheets("Grafiek")

        If TextBox1.Value = "" Then
              .[AA3] = ""
        Else: .[AA3] = DateValue(TextBox1.Value)
        End If

        If TextBox2.Value = "" Then
              .[AA4] = ""
        Else: .[AA4] = DateValue(TextBox2.Value)
        End If

        If TextBox3.Value = "" Then
              .[AA5] = ""
        Else: .[AA5] = DateValue(TextBox3.Value)
        End If

        If TextBox4.Value = "" Then
              .[AA6] = ""
        Else: .[AA6] = DateValue(TextBox4.Value)
        End If

        If TextBox5.Value = "" Then
              .[AA7] = ""
        Else: .[AA7] = DateValue(TextBox5.Value)
              .[AC3:AC7] = TextBox7 * 1
        End If

    End With

    Unload Me
    Application.Goto [Grafiek!A1]

End Sub

Zie resultaat in bijlage.

Wil volgende regel invoegen, maar waar ik hem ook plaats, hij werkt niet:

Code:
ActiveChart.ChartTitle.Text = "5 Laatste vervangingen van " & ComboBox1.Value

Indien dit niet lukt met code om de grafiektitel aan te passen kan ik het ook gewoon oplossen om een tekst in excel te plaatsen met code ipv een grafiektitel.

Groetjes Danny. :thumb:
 

Bijlagen

  • grafiek.jpg
    grafiek.jpg
    67,2 KB · Weergaven: 86
Code:
Private Sub CommandButton1_Click()
    With Worksheets("Grafiek")
        .[AA3:AA7].ClearContents
        .[AC3:AC7].ClearContents
        For i = 1 To 5
            If Me("TextBox" & i).Value = "" Then
                .Range("AA" & i + 2) = ""
            Else: .Range("AA" & i + 2) = DateValue(Me("TextBox" & i).Value)
                  .Range("AC" & i + 2) = TextBox7 * 1
            End If
        Next
        Application.Goto [Grafiek!A1]
        ActiveSheet.ChartObjects(1).Chart.ChartTitle.Text = "5 Laatste vervangingen van " & ComboBox1.Value
    End With
    Unload Me
End Sub
 
Beste Warme bakkertje, ;)

Dit is PERFECT Rudi :thumb:

Kan men ook de UserForm minimaliseren en de grafiek naar de voorgrond brengen en bij de terugknop terug gaan naar de UserForm waar men de laatste gegevens ingegeven heeft ?

Groetjes Danny. :thumb:
 
Met Hide en Show kan je userforms verbergen en zichtbaar maken.

Met vriendelijke groet,


Roncancio
 
Beste Roncancio, :)

Bedankt Roncancio, het is gelukt.

De code wordt dan:

Code:
Private Sub CommandButton1_Click()
    With Worksheets("Grafiek")
        .[AA3:AA7].ClearContents
        .[AC3:AC7].ClearContents
        For i = 1 To 5
            If Me("TextBox" & i).Value = "" Then
                .Range("AA" & i + 2) = ""
            Else: .Range("AA" & i + 2) = DateValue(Me("TextBox" & i).Value)
                  .Range("AC" & i + 2) = TextBox7 * 1
            End If
        Next
        Application.Goto [Grafiek!A1]
        Zoeken_op_LK.Hide
        ActiveSheet.ChartObjects(1).Chart.ChartTitle.Text = "5 Laatste vervangingen van " & ComboBox1.Value
    End With
    End Sub

Bij de knop komt dan te staan:

Code:
Sub Op_te_volgen_LKs()
Op_te_volgen_LK.Show
End Sub

En bij de sluitknop de volgende code:

Code:
Private Sub UserForm_QueryClose _
  (Cancel As Integer, CloseMode As Integer)
    Application.Goto [Inhoudsblad!A1]
End Sub

Anders switchte ik telkens van UserForm naar mijn grafiek.

Bedankt allen voor de samenstelling van mijn grafiek.

Groetjes Danny. :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan