![]() |
|
|||||||
| Registreer | FAQ | Ledenlijst | Interessegroepen | Kalender | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
|
|
|
LinkBack | Discussietools | Weergave |
|
#1
|
|||
|
|||
|
Heren,
Ik maak in een user form gebruik van option buttons (in een groep) Het resultaat hieruit link ik aan verschillende macro's die maar iets verschillen (naar andere cellen verwijzen) omdat ik de if then niet machtig ben. Tevens wil ik een weeknummer in een datum omzetten (de woensdag in die week) Wie kan mij hier bij helpen? Ik heb een voorbeeldje meegestuurd zoals ik het ongeveer wil Alvast bedankt, Wim |
| Sponsored Links |
|
#2
|
|||
|
|||
|
Hoi Wim,
Je macro klopt logisch gezien niet. Je schrijft namelijk eerst een datum naar cel A2 in het tweede werkblad, en vervolgens overschrijf je die met een copy&paste van cellen B2:B10 uit het eerste werkblad. Ik heb een vermoeden van wat je wilt bereiken en heb daarop de routine achter de eerste selectiebox aangepast naar het volgende. Je kunt zelf de andere routines aanpassen. Is dit wat je zoekt? Tip: je hoeft een werkblad of cel niet eerst te selecteren om erin te kunnen schrijven. De macrorecorder laat dat wel zien (want zo doe je dat als je het handmatig doet) maar dat soort zaken laat je in VBA gewoon achterwege. Groet, Remco Code:
Private Sub OptionButton1_Click()
With Worksheets("Sheet1")
Worksheets("Sheet2").Range("A1").Value = DateAdd("ww", .Range("B1").Value, Date)
.Range("B2:B10").Copy (Worksheets("Sheet2").Range("A2"))
.Range("A1").Select
End With
Unload Me
End Sub
|
|
#3
|
|||
|
|||
|
Beste Remco,
Dit is inderdaad ongeveer wat ik zoek. Echter in het programma wat ik heb zijn meerdere keuze mogelijkheden waardoor ik 12 nogal uitgebreide macro's heb Wat ik graag zou willen (indien mogelijk) is: Als keuzerondje 1 = waar dan neem waarde uit A1 en kopieer kolom A. Als keuzerondje 2 = waar dan neem waarde uit B1 en kopieer kolom B. Etc Dit betekend dat het adres waar gegevens vandaan gehaald dienen te worden veranderd. Ik heb al wat geprobeerd met offset maar het lukt me niet om het toe te wijzen adres te wijzigen. Bij als keuzerondje = waar dacht ik aan Private Sub OptionButton1_Click() If OptionButton1 = True Then Range("Q1") = 1 End Sub Waardoor ik de waarde uit Q1 kan gebruiken maar nu nog de (relatieve) verwijzing naar een adres.... Groet, Wim Laatst gewijzigd door Taz4; 9 maart 2010 om 12:48 |
|
#4
|
|||
|
|||
|
Hoi Wim,
Er zijn meerdere manieren om dit probleem op te lossen. Ik denk dat in dit geval het voldoet om simpelweg met een procedure argument te werken dat het checkbox nummer doorgeeft aan een subroutine die het kopieerwerk doet. Zet in een module de volgende code: Code:
Sub DoStuff(lCheckBox As Long)
With Worksheets("Sheet1")
Worksheets("Sheet2").Cells(1, lCheckBox).Value = DateAdd("ww", .Cells(1, lCheckBox + 1).Value, Date)
Range(.Cells(2, lCheckBox + 1), .Cells(10, lCheckBox + 1)).Copy (Worksheets("Sheet2").Cells(2, lCheckBox))
.Range("A1").Select
End With
Unload UserForm1
End Sub
Code:
Private Sub OptionButton1_Click()
DoStuff 1
End Sub
Private Sub OptionButton2_Click()
DoStuff 2
End Sub
Private Sub OptionButton3_Click()
DoStuff 3
End Sub
Op deze manier is je code goed te overzien en kun je alles laten afhandelen door één subroutine. Groet, Rembo |
|
#5
|
|||
|
|||
|
Meteen even uitgeprobeerd, het werkt bijna zoals ik het voor ogen zie.
Kleine verandering toegepast zodat het altijd naar de eerste kolom in sheet 2 gekopiëerd wordt" Sub DoStuff(lCheckBox As Long) With Worksheets("Sheet1") Worksheets("Sheet2").Cells(1, 1).Value = DateAdd("ww", .Cells(1, lCheckBox + 1).Value, Date) Range(.Cells(2, lCheckBox + 1), .Cells(10, lCheckBox + 1)).Copy (Worksheets("Sheet2").Cells(2, 1)) .Range("A1").Select End With Unload UserForm1 End Sub Slechts één ding wat niet klopt. De datum die hij in rij 1 zet is de datum van vandaag + het aantal weken wat in rij1 van sheet 1 staat. Kortom hij telt er 10 weken bij op. Hoe kan ik dit voorkomen? Groet, Wim P.S. Hoe krijg je de code zo mooi in een blok? Laatst gewijzigd door Taz4; 9 maart 2010 om 13:31 |
|
#6
|
||||
|
||||
|
door eerst te klikken op het # in de menubalk van de forum editer of de tekst te selecteren en dan te klikken op het # in de forum editer.
Als je tekst naderhand bewerkt kies dan Meer opties om in het scherm te komen waar je de code tags kunt invoeren. Je kunt ook CODE tussen [] deze haakjes zetten en /CODE tussen [] haakjes zetten. alles wat daartussen staat wordt als VBA code gezien
__________________
Suc6 druk op F1 en lees ! En zie wat de moeder van de meeste oplossingen is. en Worksheet.nl is de dochter Moderator www.worksheet.nl / mr.magoo@worksheet.nl Lees informatieve columns over buitenlandse reizen en wandelingen in Nederland Verrassende columns over het leven van alledag op een camping. Optimistische columns over pubers, ouders en ouderen. op www.jolandacatharina.nl |
|
#7
|
|||
|
|||
|
Citaat:
Code:
DateAdd("ww", .Cells(1, lCheckBox + 1).Value, Date)
Groet, Rembo |
|
#8
|
|||
|
|||
|
Dank Rembo,
Ik ben er uit (denk ik) Groet, Wim |
| Discussietools | |
| Weergave | |
|
|
|
|||||||
| Registreer | FAQ | Ledenlijst | Interessegroepen | Kalender | Zoeken | Berichten van vandaag | Markeer forums als gelezen |