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

Variabelen via de checkbox doorgeven aan macro

Status
Niet open voor verdere reacties.

maurice1972

Gebruiker
Lid geworden
20 okt 2006
Berichten
9
Hallo,

Ik heb een macro waarmee ik een 9-tal externe documenten ophaal alleen alleen dat zou ik willen opsplitsen.
Ofwel d.m.v. een formulier zou je moeten kunnen kiezen welke documenten er worden opgehaald.

Mijn gedachte is dat het als volgt zou moeten:
-d.m.v. een checkbox wordt er gekozen welke documenten er opgehaald moeten worden
-de checkbox geeft een variabele door na het aanvinken hiervoor
-na het aanvinken van de checkbox klik je op een button waarna de macro de geselecteerde documenten binnenhaald.

Is bovenstaande makkelijk te realiseren om moet ik 9 verschillende macro´s maken?

Kan iemand mij op weg helpen?

Alvast bedankt!

Groeten,
Maurice
 
Ik zou het zo doen.
Onderstaande code kijkt in het userform naar de besturingselementen.
Als het besturingselement een Checkbox is en het tevens is aangevinkt, dan wordt het bestand geopend.

Code:
Private Sub CommandButton1_Click()
Dim Ctl As Control

    For Each Ctl In Me.Controls
        If TypeName(Ctl) = "CheckBox" And Ctl = True Then
                Workbooks.Open "C:\" & Ctl.Caption & ".xls"
        End If
     Next

End Sub

Let op:
De code zoekt het bestand in de C-directory. Dat moet je dus nog naar je situatie aanpassen.
De code zoekt naar de tekst die je aan het checkbox geeft. Dit is de tekst die zichtbaar is op het userform/beeldscherm.

Met vriendelijke groet,


Roncancio
 
Bedankt voor je reaktie.

Ik ga er even mee aan de slag om te kijken of het mij lukt dit werkend te krijgen.

Groeten,
Maurice
 
Ik zou het zo doen.
Onderstaande code kijkt in het userform naar de besturingselementen.
Als het besturingselement een Checkbox is en het tevens is aangevinkt, dan wordt het bestand geopend.

Code:
Private Sub CommandButton1_Click()
Dim Ctl As Control

    For Each Ctl In Me.Controls
        If TypeName(Ctl) = "CheckBox" And Ctl = True Then
                Workbooks.Open "C:\" & Ctl.Caption & ".xls"
        End If
     Next

End Sub

Let op:
De code zoekt het bestand in de C-directory. Dat moet je dus nog naar je situatie aanpassen.
De code zoekt naar de tekst die je aan het checkbox geeft. Dit is de tekst die zichtbaar is op het userform/beeldscherm.

Met vriendelijke groet,


Roncancio

Helaas werkt dit niet bij mij :(

Dit geeft alleen de waarde door van de eerst aangevinkte checkbox, de waarden van de overige checkboxen worden niet doorgegeven.

Weet iemand de oplossing?

Groeten,
Maurice

[edit] de oplossing hiervoor heb ik nu dat er na het aanklikken van een checkbox een waarde wordt weggeschreven naar een cel waarin wordt bewaardt welke opties er worden gekozen. Op zich is dat ook werkbaar, maar mocht iemand nog een makkelijkere en betere oplossing hebben dan hou ik mij aanbevolen.[/edit]
 
Laatst bewerkt:
Dit geeft alleen de waarde door van de eerst aangevinkte checkbox, de waarden van de overige checkboxen worden niet doorgegeven.
en
Ofwel d.m.v. een formulier zou je moeten kunnen kiezen welke documenten er worden opgehaald.-na het aanvinken van de checkbox klik je op een button waarna de macro de geselecteerde documenten binnenhaald.

Dat is de bedoeling van een checkbox. Je kan aangeven wat je wilt selecteren of niet.

Het is mij dus niet geheel duidelijk hoe je het wil hebben.

Met vriendelijke groet,


Roncancio
 
Wat ik wil is dat er meerdere keuzes gemaakt kunnen worden, een simpel voorbeeldje:

Er zijn drie soorten datalijsten, genaamd:
1) leden_1_tot 12 maanden_lid.xls
2) leden_13_tot 24 maanden_lid.xls
3) eden_24_tot 36 maanden_lid.xls

D.m.v. een formulier mag men via checkboxen aangegeven welke data lijsten er op moeten worden gehaald.

Het kan dus zo zijn dat er 1 lijst moet worden opgehaald maar het ook zijn dat er 2 of 3 lijsten moeten worden opgehaald.

Ik hoop dat dit wat duidelijkheid geeft.

Groeten,
Maurice
 
Dus er zijn 3 lijsten maar 9 checkboxen.

De gebruiker kiest een (of meerdere) checkbox(en) en afhankelijk van de keuze of een checkbox geselecteerd is of niet wordt een lijst gestart.

Code:
Private Sub CommandButton1_Click()
Dim Ctl As Control

    For Each Ctl In Me.Controls
        If TypeName(Ctl) = "CheckBox" Then
                Workbooks.Open "C:" & Ctl.Caption & ".xls"
        End If
     Next

End Sub

Bovenstaande code opent van elke checkbox afzonderlijk het bijbehorende bestand. Ook als de checkbox niet aangevinkt is.

Stuur anders voor de duidelijkheid een voorbeeld (als het kan tenminste).

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
De gebruiker kiest een (of meerdere) checkbox(en) en afhankelijk van de keuze of een checkbox geselecteerd is of niet wordt een lijst gestart.

Zo moet het inderdaad gaan werken.

Met de door jou gegeven code kan het wel mits er een soort controle inkomt te zitten dat als een checkbox is aangevinkt een lijst wordt gestart en vervolgens dat er nog wel verder gecontroleerd moet worden of er nog meer lijsten moeten worden gestart.

Ga ff bedenken hoe ik een visueel voorbeeldje kan geven.

In ieder geval bedankt voor het meedenken!

Groeten,
Maurice
 
Ik heb nu de volgende code wat op zich ook werkt alleen zet ik dan een waarde in een veld en aan de hand van de waarde wordt bepaald of er een datalijst moet worden opgehaald:
Code:
Private Sub Checkbox1_Click()
   Range("A1").Select
    ActiveCell.FormulaR1C1 = "Ja"
End Sub
Code:
Private Sub CheckBox2_Click()
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "Ja"
End Sub
Code:
Private Sub CheckBox3_Click()
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "Ja"
End Sub
Code:
Private Sub CommandButton3_Click() 'Stop
If Range("A1").Value = "Ja" Then
        Workbooks.Open Filename:= _
        "C:/leden_1_tot 12 maanden_lid.xls"
' even terugspringen naar het document
    Windows("test.xls").Activate
    Sheets("Blad1").Select
    End If
    If Range("A2").Value = "Ja" Then
        Workbooks.Open Filename:= _
        "C:/leden_12_tot 24 maanden_lid.xls"
' even terugspringen naar het document
    Windows("test.xls").Activate
    Sheets("Blad1").Select
    End If
    If Range("A3").Value = "Ja" Then
        Workbooks.Open Filename:= _
        "C:/leden_24_tot 36 maanden_lid.xls"
    End If
    Unload UserForm1
' even terugspringen naar het document
    Windows("test.xls").Activate
    Sheets("Blad1").Select
' en de cellen weer schoonmaken voor een volgende selectie ronde
    Range("A1:A3").Select
    Selection.ClearContents
End Sub
 
Laatst bewerkt:
Maurice1972 en Roncancio,

Ik denk dat de befaamde backslash op dit forum weer weg is gevallen en dat de
code van Roncancio daarom niet goed werkt bij jou.


Code:
Workbooks.Open "C:" & Ctl.Caption & ".xls"

Volgens mij is de backslash weggevallen achter de C:

Code:
Workbooks.Open "C:[B][COLOR="Red"]\[/COLOR][/B]" & Ctl.Caption & ".xls"

En dan werk de code van Roncancio wel??

Tip: controleer altijd of de backslash weg is gevallen en zet er anders desnoods 2 achter elkaar (dan zie je er een op dit forum)

Koosl
 
Zo ?

Code:
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
 Workbooks.Open Filename:="C:\leden_1_tot 12 maanden_lid.xls"
End If

If Checkbox2.Value = True Then
 Workbooks.Open Filename:="C:\leden_13_tot 24 maanden_lid.xls"
End If

If Checkbox3.Value = True Then
 Workbooks.Open Filename:="C:\leden_25_tot 36 maanden_lid.xls"
End If
Workbooks("test.xls").Worksheets("Blad1").Range("A1:A3") = ""

Unload Me

End Sub
 
Super, dit werkt perfect.

Ik ga morgen weer even verder puzzelen, hartelijk dank voor de hulp!

Groeten,
Maurice
 
Laatst bewerkt:
Ik denk dat de befaamde backslash op dit forum weer weg is gevallen en dat de
code van Roncancio daarom niet goed werkt bij jou.

Ai, dit wist ik eerlijk gezegd niet.
Ik sluit ook niet uit dat ik de backslash gewoon vergeten ben.

In ieder geval bedankt voor de tip !

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan