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

Keuzerondje gebruiken

Status
Niet open voor verdere reacties.

matthiej88

Gebruiker
Lid geworden
21 jan 2010
Berichten
85
Hallo,

Ik probeer een keuzerondje toe te voegen, zodat gebruikers aan kunnen vinken welke risico's van toepassing zijn op een bepaald werk.

Ik ben al even bezig, heb al wat op het forum gezocht, maar ik kom er niet helemaal uit. Op dit moment heb ik dit (ben zelf wat aan het knooien geweest, dus er kunnen wat rare fouten in zitten ;))

Private Sub OptionButton1_Click()
'
' Bestratingverw Macro
'

'
If Keuzerondje11 = False Then
Keuzerondje11 = True
Sheets("Risico's").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
Range("S2:X7").Select
Selection.Copy
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("B2").Select
ActiveSheet.Paste
ActiveWindow.View = xlPageBreakPreview
Rows("8:8").Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
Range("D13").Select
Sheets("Invulblad").Select
ElseIf Keuzerondje11 = True Then
Keuzerondje11 = False
Sheets("Risico's").Select
Range("K3").Select
Selection.Copy
Range("B2:G7").Select
ActiveSheet.Paste
Range("K7").Select
Application.CutCopyMode = False
ActiveSheet.HPageBreaks(1).DragOff Direction:=xlUp, RegionIndex:=1
Sheets("Invulblad").Select
End If
End Sub

Hoe zorg ik ervoor dat het keuzerondje uitgevinkt wordt als er nog eens op geklikt wordt en dan dus het gedeelde achter de elseif wordt uitgevoerd?

alvast bedankt,

Matthijs
 
Deze doet wat jou macro zou moeten doen.

Code:
Private Sub OptionButton1_Click()
  With Sheets("Risico's")
    .Range(iif(optionbutton1.value, "K3","S2:X7")).Copy .Range(iif(optionbutton1.value,"B2:G7","B2"))
     If .HPageBreaks.count>0 then .HPageBreaks(1).DragOff xlUp, 1
     If optionbutton1.value then .HPageBreaks.Add Rows(8)
  End with
End Sub
 
Hij werkt niet bij mij.

Wellicht komt het omdat ik de naam (optionbutten1) niet goed heb. Op het blad heet het Keuzerondje 13, maar als ik dat invul werkt ie nog niet.

Daarnaast gaat het keuzerondje ook niet weer "uit" als ik er nog eens op klik, wellicht ligt dit ook aan de foute naam?

Het keuzerondje staat trouwens niet op het tabblad risico's, ligt het daar anders aan?

Een selectievakje vond ik zelf nog wat mooier, dit zou op dezelfde manier moeten werken toch?

Nu heb ik het volgende, naar mijn idee zou dit toch ook gewoon moeten werken? Hij pakt echter alleen het eerste gedeelte, ook als er waar staat in f77. hoe komt dit?

Code:
Sub Verwbestrtoev()
'
' Verwbestrtoev Macro
'

'
If F77 = onwaar Then
    Sheets("Risico's").Select
    Range("S2:X7").Select
    Selection.Copy
    ActiveWindow.ScrollColumn = 16
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("B2:B7").Select
    ActiveSheet.Paste
    Range("D11").Select
    ActiveWindow.View = xlPageBreakPreview
    Rows("8:8").Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
    ActiveWindow.View = xlNormalView
    Range("D9").Select
    Sheets("Invulblad").Select
    Range("F81").Select
    ElseIf F77 = waar Then
    Sheets("Risico's").Select
    Range("H2").Select
    Selection.Copy
    Range("B2:G7").Select
    ActiveSheet.Paste
    Range("I4").Select
    Application.CutCopyMode = False
    ActiveWindow.View = xlPageBreakPreview
    Rows("8:8").Select
    ActiveSheet.HPageBreaks(1).Delete
    ActiveWindow.View = xlNormalView
    Sheets("Invulblad").Select
    Range("F82").Select
    End If
End Sub
 
Ik heb de code veranderd:

Code:
Private Sub Checkbox1_Click()
  With Sheets("Risico's")
    .Range(IIf(CheckBox1.Value, "K3", "S2:X7")).Copy .Range(IIf(CheckBox1.Value, "B2:G7", "B2"))
     If .HPageBreaks.Count > 0 Then .HPageBreaks(1).DragOff xlUp, 1
     If CheckBox1.Value Then .HPageBreaks.Add Rows(8)
  End With
End Sub

Hij reageert er wel op, alleen geeft hij een fout bij
Code:
HPageBreaks.Add Rows(8)

Is het niet mogelijk om een pagina-einde te verwijderen in een macro?
 
Code:
Private Sub Checkbox1_Click()
  With Sheets(1)
    .Range(IIf(CheckBox1.Value, "K3", "S2:X7")).Copy .Range(IIf(CheckBox1.Value, "B2:G7", "B2"))
     If .HPageBreaks.Count > 0 Then [COLOR="Blue"].HPageBreaks(1).Delete[/COLOR]
     If CheckBox1.Value Then [B].HP[/B]ageBreaks.Add Rows(8)
  End With
End Sub
loopt als een zonnetje.
 
Code:
Private Sub Checkbox1_Click()
  With Sheets("Risico's")
    .Range(IIf(CheckBox1.Value, "S2:X7", "K3")).Copy .Range(IIf(CheckBox1.Value, "B2", "B2:G7"))
     If CheckBox1.Value Then Rows("8:8").Select
    [COLOR="Red"] ActiveSheet.HPageBreaks(1).Delete[/COLOR]
  End With
End Sub

Hij loopt toch spaak op het rood gearceerde gedeelte..
 
Waarom neem je de code niet over die ik je aanreik ?
 
Excuus! Ik had hem blijkbaar niet goed gekopieerd :eek:

Ik heb de codes wel omgedraaid, omdat hij bij het aanvinken werd verwijderd en andersom. Nu werkt hij prima, behalve dat hij het pagina-einde nog niet verwijderd.

Uiteindelijk zit er een nieuw probleem aan te komen, dat ik hier beschrijf.
HTML:
http://www.helpmij.nl/forum/showthread.php?t=501317

Deze functie moet namelijk voor een stuk of 15 verschillende risico's worden toegepast. En in alle mogelijke combinaties moet de opmaak eigenlijk kloppen.
 
Helaas, ik dacht dat 't nu opgelost was, maar hij geeft weer een foutmelding.
Code:
Private Sub Checkbox1_Click()
  With Sheets(6)
    .Range(IIf(CheckBox1.Value, "S2:X8", "K3")).Copy .Range(IIf(CheckBox1.Value, "B2", "B2:G8"))
[B][COLOR="Red"]     If .HPageBreaks.Count > 0 Then .HPageBreaks(1).Delete[/COLOR][/B]
     If CheckBox1.Value Then .HPageBreaks.Add Rows(10)
  End With
End Sub

Ik denk dat het eraan ligt hoe de pagina nu ingesteld is. Ik heb wel wat veranderd met betrekking tot de pagina einden etc. maar ik krijg het niet weer goed.

Het is de bedoeling dat het betreffende pagina-einde weer wordt verwijderd, als het risico ook wordt verwijderd.

Iemand een idee waar het aan ligt?
 
Toen ik vanmorgen het bestand weer opstartte werkte de macro wel, zij het deels.

het toevoegen van de pagina-einden werkt niet met deze code:

Code:
Private Sub CheckBox3_Click()
  With Sheets(6)
    .Range(IIf(CheckBox3.Value, "S14:X22", "K3")).Copy .Range(IIf(CheckBox3.Value, "B14", "B14:G22"))
     If .HPageBreaks.Count > 0 Then .HPageBreaks(1).Delete
     If CheckBox3.Value Then .HPageBreaks.Add Rows(24)
  End With
End Sub

Bij dit deel van de code
Code:
If .HPageBreaks.Count > 0 Then .HPageBreaks(1).Delete
heb ik nu altijd een 1 staan, omdat hij de andere pagina-einden niet vindt (deze zijn immers niet aangemaakt).

iemand een oplossing :)?
 
Begin bij het begin: koop een goed boek over VBA en neem dat systematisch door. Een taal leer je van eenvoudig naar complex, niet andersom.
Daarna heeft het pas zin jou suggesties te geven, omdat je dan pas weet wat de code precies doet en waarom.
 
Leuke suggestie, gaat misschien ook wel gebeuren.

Alleen heb ik daar nu niets aan. Het was de bedoeling om een standaard projectplan te maken voor het stagebedrijf waar ik loop. In eerste instantie was het niet de bedoeling om het allemaal zo ingewikkeld te maken, maar ivm de vorst etc zit ik nog steeds binnen en was er tijd genoeg om een wat uitgebreider en gebruiksvriendelijke versie te maken.

Nou is het waarschijnlijk de bedoeling dat ik maandag wel naar buiten ga, dus eigenlijk moet dit projectplan vandaag af. Er rest dus niet zoveel tijd meer om voor zoiets een oplossing te vinden en al helemaal niet om (naast 40 uur stage en andere dingen) een heel boek over VBA door te nemen.

't zou prettig zijn als iemand mijn vraag kan beantwoorden. Suggesties betreffende een goed boek zijn ook welkom!

Matthijs
 
Ik zit nog steeds met het volgende probleem. Via deze code gebruik ik een keuzevakje om bepaalde onderdelen toe te voegen. Het invoegen van deze onderdelen gaat goed, maar het aanpassen van het paginabereik gaat niet goed. In de bijlage is de sheet weergegeven waar alles moet gebeuren. Vanaf rij S staat de data, die door het aanklikken van het keuzevakje wordt verplaats, dmv onderstaande code, naar de kolom B t/m G. Hiervan moet eigenlijk een afdrukbereik worden bepaald, zodat er geen lege pagina's uitkomen als een bepaald risico niet aangevinkt is.

Code:
Private Sub Checkbox1_Click()
  With Sheets(6)
    .Range(IIf(CheckBox1.Value, "S2:X8", "K3")).Copy .Range(IIf(CheckBox1.Value, "B2", "B2:G8"))
     If .HPageBreaks.Count > 0 Then .HPageBreaks(1).Delete
     If CheckBox1.Value Then .HPageBreaks.Add Rows(10)
  End With
End Sub

Zoals je in de code kunt zien worden pagina-einde toegevoegd of verwijderd, tenminste, dat is de bedoeling. Dit gebeurd dus niet. Hoe los ik dit op?
 

Bijlagen

  • voorbeeld.xlsx
    14 KB · Weergaven: 61
Ik heb een oplossing gevonden.

niet precies de oplossing zoals ik m eerder in gedachten had, maar wellicht is deze oplossing nog makkelijker.

Met de volgende code worden rijen weergegeven dan wel verborgen:
Code:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Sheets("Risico's").Rows("2:8").Hidden = False
End If
If CheckBox1.Value = False Then
Sheets("Risico's").Rows("2:8").Hidden = True
End If
End Sub

Wanneer er meerdere checkboxen gebruikt worden om verschillende rijen te verbergen, moet er utssen deze te verbergen rijen altijd 1 rij zitten. Anders worden de rijen welke tussen 2 andere verborgen rijen zit niet weergegeven.

Met een beetje creativiteit en trial en error lukt het dus ook.

Maar nog steeds, wie weet er een geod boek?

Matthijs
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan