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

msgbox verschijnt meermaals

Status
Niet open voor verdere reacties.

Meurik

Gebruiker
Lid geworden
25 dec 2006
Berichten
18
Goeiedag iedereen,
Ik heb in excel een invuldocument gemaakt waarin ik op het einde een commandbutton heb gemaakt die onder bepaalde voorwaarden aanleiding kan geven tot het verschijnen van een msgbox vbYESNO.
Hieronder vindt u de code die ik heb gemaakt om deze msgbox te activeren. Afhankelijk van de aangeklikte radiobuttons in het document moeten bepaalde opdrachten uitgevoerd worden.
Alhoewel deze code omslachtig is (ik heb geen enkele vorming inzake excel noch VBA) werkt deze perfect behalve dat de msgbox 3 keer veschijnt (en dus 3 keer JA of NEEN moet aangeklikt worden) alvorens de actie wordt uitgevoerd (rijen zichtbaar/onzichtbaar maken en kopiëren/plakken).
Ik heb geen idee hoe ik dit euvel kan voorkomen ? Jullie wel ? Opmerkingen omtrent de gebruikte codes zijn uiteraard ook welkom ! Alvast bedankt.

Private Sub verzoekbevestigen_Click()
Application.ScreenUpdating = False

If creatieo = True Then
Msgbox ("Wenst u de BTW te activeren ?"), vbYesNo + vbQuestion, "BTW-activeren"

If Msgbox("Wenst u de BTW te activeren ?", vbYesNo + vbQuestion, "BTW-activeren") = vbYes And hoedanigheidNPO = True Then
Rows("335:349").EntireRow.Hidden = False
Rows("350:353").EntireRow.Hidden = True
Rows("354:379").EntireRow.Hidden = False
Rows("380:385").EntireRow.Hidden = True
Rows("386:408").EntireRow.Hidden = False
Rows("409:415").EntireRow.Hidden = True
Rows("416:449").EntireRow.Hidden = False
Range("C18:X20").Copy Range("C347:x349")
Range("G49").Copy
Range("N373").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C335").Select

If Msgbox("Wenst u de BTW te activeren ?", vbYesNo + vbQuestion, "BTW-activeren") = vbYes And _
hoedanigheidRPO = True Then
Rows("335:346").EntireRow.Hidden = False
Rows("347:350").EntireRow.Hidden = True
Rows("351:379").EntireRow.Hidden = False
Rows("380:385").EntireRow.Hidden = True
Rows("386:408").EntireRow.Hidden = False
Rows("409:415").EntireRow.Hidden = True
Rows("416:449").EntireRow.Hidden = False
Range("C31:X33").Copy Range("C351:X353")
Range("G49").Copy
Range("N373").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C351").Select
End If
End If
End If
 
Meurik

je moet de vraag in de MsgBox geen 3 keer stellen. Je stelt ze 1 maal en zet het antwoord in een variabele. Vervolgens gebruik je 2 keer de waarde van die variabele. De aangepaste code volgt dadelijk.

Wigi
 
Hier is 'ie dan:

Code:
Private Sub verzoekbevestigen_Click()
    Dim btwActiveren
    Application.ScreenUpdating = False
    
    If creatieo = True Then
        btwActiveren = MsgBox("Wenst u de BTW te activeren ?", vbYesNo + vbQuestion, "BTW-activeren")
        
        If btwActiveren = vbYes And hoedanigheidNPO = True Then
            Range("A335:A349,A354:A379,A386:A408,A416:A449").EntireRow.Hidden = False
            Range("A350:A353,A380:A385,A409:A415").EntireRow.Hidden = True
            Range("C18:X20").Copy Range("C347:X349")
            Range("G49").Copy
            Range("N373").PasteSpecial xlPasteValuesAndNumberFormats
            Application.CutCopyMode = False
            Range("C335").Select
        
            If btwActiveren = vbYes And hoedanigheidRPO = True Then
                Range("A335:A346,A351:A379,A386:A408,A416:A449").EntireRow.Hidden = False
                Range("A347:A350,A380:A385,A409:A415").EntireRow.Hidden = True
                Range("C31:X33").Copy Range("C351:X353")
                Range("G49").Copy
                Range("N373").PasteSpecial xlPasteValuesAndNumberFormats
                Application.CutCopyMode = False
                Range("C351").Select
            End If
        End If
    End If
End Sub

Wigi
 
Beste Wigi
Mijn eerste "probleem" lijkt hiermee opgelost. Ga het onmiddellijk uitproberen. Alvast bedankt,
Meurik
 
Beste Wigi
Heb de code overgenomen in mijn bestand en het werkt perfect voor:

IF BTWActiveren=vbYES And hoedanigheidNPO=True then ...
actie wordt uitgevoerd
MAAR
IF BTWActiveren=vbYES And hoedanigheidRPO=True then ...
wordt de actie niet uitgevoerd. Hierna gebeurt niets en ook geen foutmelding.
Ter info
De verwijzingen creatieo, hoedanigheidNPO en hoedanigheidRPO zijn optionbuttons in mijn document.
Groeten
Meurik
 
Lijkt me raar. Als je code uittest, is hoedanigheidRPO toch aangezet?
 
Is wel degelijk aangevinkt en, trouwens, als ik de zaken omkeer, ttz in de eerste opdracht hoedanigheidRPO en in de 2de opdracht hoedanigheidNPO, dan voert de vba code ook alleen de eerste opdracht (nu hoedanigheidRPO) uit en niet de 2de.
 
Beste Wigi
Na wat testen heb ik het probleem kunnen oplossen door tussen de 2 If-opdrachten ELSE te zetten zodat de uiteindelijke code eruitziet als volgt:

Dim btwActiveren
Application.ScreenUpdating = False

If creatieo = True Then
btwActiveren = Msgbox("Wenst u de BTW te activeren ?", vbYesNo + vbQuestion, "BTW-activeren")

If btwActiveren = vbYes And hoedanigheidNPO = True Then
Range("A335:A349,A354:A379,A386:A408,A416:A449").EntireRow.Hidden = False
Range("A350:A353,A380:A385,A409:A415").EntireRow.Hidden = True
Range("C18:X20").Copy Range("C347:X349")
Range("G49").Copy
Range("N373").PasteSpecial xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
Range("C335").Select
Else
If btwActiveren = vbYes And hoedanigheidRPO = True Then
Range("A335:A346,A351:A379,A386:A408,A416:A449").EntireRow.Hidden = False
Range("A347:A350,A380:A385,A409:A415").EntireRow.Hidden = True
Range("C31:X33").Copy Range("C351:X353")
Range("G49").Copy
Range("N373").PasteSpecial xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
Range("C351").Select
End If
End If
End If

Nogmaals bedankt voor uw tussenkomst
Meurik
 
Zet de vraag dan op opgelost aub.

Zet in het vervolg je code ook tussen code tags: selecteer de code die je plakt, en klik op het hekje net boven waar je je tekst typt. Dan komt de code mooi in een apart deel. Anders is het bijna niet leesbaar.

Prettig weekend verder.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan