MSForms MultiPage bug? VBA Office2007 Excel

Status
Niet open voor verdere reacties.

VBAmateur

Gebruiker
Lid geworden
11 feb 2010
Berichten
18
Ik wil alleen geautoriseerde gebruikers toelaten tot één van de pages van een MultiPage. Via het MultiPage_Change event check ik of de betreffende Page geselecteerd wordt via de .Value-eigenschap en vraag om een wachtwoord. Bij een verkeerd ingevoerd wachtwoord stel ik de MultiPage.Value-eigenschap in op 0; de eerste Page. Maarrr... de controls van de 'verboden' Page blijven zichtbaar!
Als ik de MultiPage.Value op een andere manier instel gaat het allemaal wel prima.

Ter illustratie de navolgende code. Ik heb hiervoor een UserForm1 met daarop een MultiPage1 en een CommandButton1 aangemaakt. De MultiPage1 heeft drie Pages met op Page1 een TextBox1, op Page2 een CommandButton2 en op Page3 een ComboBox1.

Code:
Private Sub CommandButton1_Click()
Dim iIndex%
    With Me.MultiPage1
        iIndex = .Value
        iIndex = iIndex + 1
        If iIndex > .Pages.Count - 1 Then iIndex = 0
        .Value = iIndex
    End With
End Sub

Sub Test
UserForm1.Show
End Sub

Dit gaat prima: elke keer als je op CommandButton1 klikt, wordt de navolgende Page geselecteerd en de control op die Page keurig weergegeven.

Maar nu:
Code:
Private Sub MultiPage1_Change()
    With Me.MultiPage1
        If .Value = 2 Then .Value = 0
    End With
End Sub

Sub test()
    UserForm1.Show
End Sub

:evil:Dit gaat fout: Page1 wordt wel geselecteerd, maar de ComboBox1 van Page3 blijft in beeld. De TextBox1 van Page1 kan ik niet naar voren halen of activeren (TextBox1.SetFocus geeft een foutmelding omdat hij niet zichtbaar is).

Heeft iemand een oplossing? Doe ik iets fout :o of is dit een bug :mad:?
 
Ik gok dat het probleen wordt veroorzaakt door het change-event zelf,

Maar je kunt toch al afvangen tijdens het drukken op de commandbutton welke pagina geselecteerd moet worden (en welke bijv. compleet verborgen?)
 
Hoi Eric,

de commandbutton heb ik gebruikt om te kunnen illustreren dat het probleem zich alleen bij het change-event voordoet. In het systeem dat ik aan het ontwikkelen ben, komt een button met een dergelijke functie niet voor.
Ik denk dat ik het anders oplos, door de controls op de betreffende Page wel of niet te enabelen, afhankelijk van het autorisatieniveau van de gebruiker.
Niet zo elegant vind ik, maar het is niet anders.

In ieder geval bedankt voor je reactie, groet,

VBAmateur
 
Nog geen antwoord.

Hoi,

om door te kunnen gaan heb ik maar een work-around geprogrammeerd; maar ik weet nog steeds niet wat de oorzaak is. Zelf denk ik een bug (die zijn er genoeg), maar zeker weten doe ik dat ook niet.

Is er iemand met meer verstand van zaken?

VBAmateur

P.S. kun je ergens dit soort bugs - ik heb al een hele lijst - aan MicroSoft door geven, zodat er misschien wat mee gebeurt? Het kost namelijk elke keer zo veel tijd om er achter te komen dat het niet aan jou ligt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan