• 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.

Wat doe ik hier fout

Status
Niet open voor verdere reacties.

patrickje

Gebruiker
Lid geworden
31 mei 2009
Berichten
172
Hoi

Ik ben mijn userform an het aanpassen.
Nu wil ik div. waardes op verschillende bladen weg schrijven. Mits de checkboxen zijn geselecteerd.

Ik heb nu deze code gemaakt.
Code:
Private Sub CommandButton3_Click()
Set ws = Worksheets("Blad1")
lrij = ActiveSheet.Range("C107").End(xlUp).Row
    Cells(lrij + 1, "C").Value = Me.TextBox1.Text
    Cells(lrij + 1, "D").Value = Me.TextBox2.Text
    Cells(lrij + 1, "E").Value = Me.TextBox3.Text
    Cells(lrij + 1, "F").Value = Me.TextBox4.Text
    Cells(lrij + 1, "G").Value = Me.TextBox5.Text
    Cells(lrij + 1, "H").Value = Me.TextBox6.Text
    Cells(lrij + 1, "I").Value = Me.TextBox7.Text
    
  Else
  
Set ws = Worksheets("Blad2")
lrij = ActiveSheet.Range("C107").End(xlUp).Row
    Cells(lrij + 1, "C").Value = Me.TextBox1.Text
    Cells(lrij + 1, "D").Value = Me.TextBox8.Text
    Cells(lrij + 1, "E").Value = Me.TextBox9.Text
    Cells(lrij + 1, "F").Value = Me.TextBox10.Text
    Cells(lrij + 1, "G").Value = Me.TextBox11.Text
    Cells(lrij + 1, "H").Value = Me.TextBox12.Text

Als ik alleen blad 1 gebruik doet hij het goed. Zodra ik blad 2 gebruik schrijft hij niks weg.
Wie kan mij weer opweg helpen.
 
Wil je in alle werkbladen wegschrijven of in het huidige werkblad?
Waarom gebruik je Else? Ik zie namelijk geen IF-functie.

Met vriendelijke groet,


Roncancio
 
Ik ben al van alles aan het proberen.
Maar op dit moment schrijft hij alles op 1 werkblad weg.

Omdat ik met 4 checkboxen werk kan ik die misschien beter in de formule verwerken ???
 
Ok ik heb het nu aangepast.

Code:
Private Sub CommandButton3_Click()

If CheckBox1.Value = True Then
End If
With Sheets("Blad1")
    lrij = .Range("C" & Rows.Count).End(xlUp).Row + 1     'eerste niet-lege rij
    .Cells(lrij, "C") = TextBox1.Value
    .Cells(lrij, "D") = TextBox2.Value
    .Cells(lrij, "E") = TextBox3.Value
    .Cells(lrij, "F") = TextBox4.Value
    .Cells(lrij, "G") = TextBox5.Value
    .Cells(lrij, "H") = TextBox6.Value
    .Cells(lrij, "I") = TextBox7.Value

  End With
  
If CheckBox2.Value = True Then
End If
With Sheets("Blad2")
    lrij = .Range("C" & Rows.Count).End(xlUp).Row + 1     'eerste niet-lege rij
    .Cells(lrij, "C") = TextBox1.Value
    .Cells(lrij, "D") = TextBox8.Value
    .Cells(lrij, "E") = TextBox9.Value
    .Cells(lrij, "F") = TextBox10.Value
    .Cells(lrij, "G") = TextBox11.Value
    .Cells(lrij, "H") = TextBox12.Value
        
End With

Dit werkt wel alleen nu zou ik willen dat als checkbox value = false dt hij wel textbox 1 wegschrijft op 4 bladen.

Hoe kan ik dit erin verwerken ????
 
Code:
If CheckBox1.Value = True Then
End If

????????
Je gaat controleren op de waarde v/e Checkbox, maar je doet er dan niets mee :eek:
 
Ja dat klopt.
Eigenlijk hoort het zo te zijn dat checkbox 1 true is dan mag hij de waardes wegschijven op blad 1.
Maar ik zit hier nog mee te puzzelen.

Alle hulp is welkom
 
Ok ik denk dat ik nu weer een stap heb gemaakt

Code:
Private Sub CommandButton3_Click()
If CheckBox1.Value = True Then saveblad1
    
    
  MsgBox "gegevens zijn toegevoegd"
Unload Me
End Sub

saveblad1 is nu een private sub voor het wegschrijven op blad 1

Heeft iemand nog tips of is dit wel een goede oplossing.

Ik hoor graag tips van de kenners.
 
Code van 'saveblad1' kan volgens mij in een standaard module met een 'Sub'.

Als je de code 'saveblad1' alleen maar met de Commandbutton3 activeert, zou ik de code van 'saveblad1' gewoon in de 'Private sub' van de CommandButton3 zetten.
Dus:
Code:
Private Sub CommandButton3_Click()
If CheckBox1.Value = True Then 
....code van saveblad1.....
    
    
  MsgBox "gegevens zijn toegevoegd"
Unload Me
End Sub
 
Hoi Harry

Kijk ik heb een voorbeeld bestandje bij gepost.
Het gaat dus eigenlijk als volgt.

Ik heb 4 checkboxen.
Elke checkbox staat gelijk aan en pagina.
Misschien heb je nu een idee om het nog makkelijker in elkaar te zetten.

Gr.

Patrick
 

Bijlagen

  • testje.xlsm
    65,2 KB · Weergaven: 39
Ik heb de code wat aangepast zodat je onder meer geen aparte code meer nodig heb voor het verwerken van elke checkbox.

Met vriendelijke groet,


Roncancio
 

Bijlagen

  • testje.zip
    37,3 KB · Weergaven: 21
Ok dank je

Dit gaat mij iets te ver denk ik wel.
Ik kan deze formule niet verklaren hoe hij alles wegschrijft.

Hij geeft alleen een fout aan, Als ik alle velden invul.
 
Er zat een klein foutje in.
Nu werkt het wel.

Met vriendelijke groet,


Roncancio
 

Bijlagen

  • testje 1.0.zip
    37,6 KB · Weergaven: 22
Hoi Roncancio

Dank je voor het aanpassen.

Deze werkt goed. Zou je misschien de code kunnen verklaren voor mij. Hoe hij werkt.
Dit zou mij veel vragen posten schelen.

Greetingz
 
Je vraag zal vooral slaan op dit gedeelte van Commandbutton3:

Code:
    For Each CT In Controls
        If TypeOf CT Is msforms.CheckBox Then
            With Sheets("Blad" & Right(CT.Name, 1))
                lRij = .Range("C" & Rows.Count).End(xlUp).Row + 1
                .Cells(lRij, "C") = TextBox1.Value
                If CT.Value = True Then
                    If Right(CT.Name, 1) = 1 Then
                        iB = 2
                        IA = 6
                    Else
                        iB = Right(CT.Name, 1) * 5 - 2
                        IA = 5
                    End If
                    For iKol = 4 To 3 + IA
                        .Cells(lRij, iKol).Value = Me.Controls("TextBox" & iB).Value
                        iB = iB + 1
                    Next
                End If
            End With
        End If
    Next

Elk besturingselement (textbox, commandbutton, checkbox, etc) wordt gecontroleerd of het een checkbox betreft.
Vervolgens wordt gekeken of de checkbox is aangevinkt.
Is dat het geval dan zullen de gegevens van de betreffende textboxen in het werkblad worden geplaatst.
Hierbij wordt gekeken naar het getal in de naam van de checkbox.
Dus Checkbox1, Checkbox2 , etc.
Bij de checkboxen wordt het getal van de checkbox (bijv. Checkbox2 ) vermenigvuldigt met 5 en vervolgens wordt er 2 afgetrokken. Waarom?

Checkbox2 begint bij Textbox8 (2 * 5 - 2 = 8)
Checkbox3 begint bij Textbox13 (3 * 5 - 2 = 13)
Checkbox4 begint bij Textbox18 (4 * 5 - 2 = 18)

Met vriendelijke groet,


Roncancio
 
hey Roncancio

Bedank voor je reactie
Het is me nu wat duidelijker.

Nog 1 vraagje over de formule.

Wat betekenen deze regels ?

Dim CT As Control
Dim lRij As Long
Dim iB As Integer
Dim IA As Integer
Dim iKol As Integer

en is het aan te raden om meer van deze regels bij elke formule in te geven ??

MVG
 
Met deze regels worden variabelen benoemd.
Met het benoemen van een variabele reserveer je een stukje van het geheugen voor de betreffende variabele.
Voorbeeld een string gebruik je voor tekst, een integer of long gebruik je voor getallen waarbij de aantekening dat long een groter getal aankan.

In VBA is het benoemen van variabele niet verplicht (vaak wel in andere talen) maar wel zeer aan te bevelen.
Een goede gewoonte is tevens om in de benaming aan te geven om wat voor soort variabele het gaat.

Voorbeeld:
Zoals ik al meldde gebruik men string voor tekst dus onderstaande zijn allen mogelijk.
Al dan niet in hoofdletters.

sNaam
strNaam
s_Naam
string_Naam

En zo zijn er nog wel een aantal mogelijkheden.

Maar dus liever geen Naam.

Met vriendelijke groet,


Roncancio
 
Ok dank je ben weer iets wijzer geworden.

Het is weer bewezen.

Je bent nooit te oud om te leren.

M.V.G.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan