Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Check gelijke knoppen op een Userform  (gelezen 6524 keer)

0 leden en 1 gast bekijken dit topic.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Check gelijke knoppen op een Userform
« Reactie #15 Gepost op: 14 april 2007, 22:52:44 »
Vanwege talloze reacties:

Luc, ik ken je nu al een hele tijd als specialist in Excel en VBA.
Leo, je kwam er sinds kort bij, veelbelovend, inspirerend en ethousiast.
Erik, nieuw... maar zo opbouwend, uiterst bekwaam en toch met je 2 voeten op de grond.

Dank U, vanwege het forum en zijn gasten.

Ik hoop op een lange, goede, aanvullende samenwerking tussen jullie.

Je kan je nauwelijks voorstellen hoe veel mensen de uitwisseling van jullie Excel- en vba-kennis volgen en bewonderen (en er uit leren) 8).

"Kennis is slechts dan uitzonderlijk, als ze wordt doorgegeven" ("conthteos" 1624-1689 DC) ;)


:) SoftAid :)       
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Check gelijke knoppen op een Userform
« Reactie #16 Gepost op: 15 april 2007, 21:25:14 »
SoftAid, ook al is deze reactie volkomen 'off-topic' ;D (een klein zijspoortje moet kunnen, zeg ik maar!) toch onwijs bedankt voor je lovende woorden. En ik kan niet anders doen dan hetzelfde hopen als jij!

Groet, Leo
______________________________

Groet, Leo

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: Check gelijke knoppen op een Userform
« Reactie #17 Gepost op: 16 april 2007, 00:22:20 »
SoftAid, dankjewel

dit is een mooi gezegde
Citaat
Kennis is slechts dan uitzonderlijk, als ze wordt doorgegeven
Laat het duidelijk zijn dat mijn kennis - weliswaar ontstaan door duizenden uurtjes "spelen en werken met Excel" - uit andermans handen ontvangen is.

Hoelang en hoeveel ik hier zal rondhangen is niet zeker. Ik beschouw dit als een proefperiode:
1. voelen hoe de sfeer hier is
2. ook eens wat Excel-amusement in het Nederlands
3. te weten komen of dit eventueel helpt voor mijn business in België (wellicht minder vermoeiend dan overzeese onderhandelingen)
4. weer wat nieuwe dingen bijleren via allerlei "onmogelijk gekke" vragen  :)

slaapwel!
Erik

Offline LucB

  • Lid
  • *
  • Berichten: 55
  • Groeten Luc
Re: Check gelijke knoppen op een Userform
« Reactie #18 Gepost op: 16 april 2007, 10:26:47 »
SoftAid, Leo en Erik,

Alen dank voor de warme woorden en het delen van inzichten.

Delen is immers vermenigvuldigen.

En spelen is geen spelletje.

Om de proefperiode van Erik iets op te rekken en dat hij voor deze site behouden mag blijven, zal ik mijn best doen regelmatig "onmogelijk gekke vragen" te stellen.

Het progje is nu geheel naar mijn zin.
Binnenkort zal het getest worden met kinderen met motorische achterstand.

Allen nogmaals dank en graag tot een volgende keer

Met vriendelijke groet,
Luc

Windows XP Prof SP2, AMD DualCore 4400, 1024 MB RAM, NTFS, Norton AntiVirus, Internet Explorer 7.0, Outlook Express 6

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: Check gelijke knoppen op een Userform
« Reactie #19 Gepost op: 16 april 2007, 12:43:39 »
Luc,

'k Heb je ding nog eens bekeken :-)

enkele losse tips: ('t wordt weer een lange reply)
1. Maak meer gebruik van WITH ... END WITH om je code overzichtelijk te "bundelen".
2. "gaan naar" werkbladen of bereiken is zelden nodig. Vermijd dus "select": het spaart je ook enkele regels.
in plaats van
        x = Sheets("Blad2").Cells(Rows.Count, 1).End(xlUp).Row + 1
        Sheets("Blad2").Range("A" & x) = "Naam"
        Sheets("Blad2").Range("A" & x) = Sheets("Blad1").Range("U1")
        Sheets("Blad2").Range("B" & x) = Date
        Sheets("Blad2").Range("C" & x) = UserForm1.Label2.Caption
        Application.ScreenUpdating = False
        Sheets("Blad2").Select
        Range("A1:C" & x).Select
        Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlGuess, _
                       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        Range("A1").Select
        Sheets("Blad1").Select
        Application.ScreenUpdating = True
krijgen we
        With Sheets(2)
        x = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        .Range("A" & x) = "Naam"
        .Range("A" & x) = Sheets("Blad1").Range("U1")
        .Range("B" & x) = Date
        .Range("C" & x) = UserForm1.Label2.Caption
        .Range("A1:C" & x).Sort Key1:=.Range("C2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        End With
3. Binnen de userform-code maak je best gebruik van het sleutelwoord "Me" in plaats van de naam van de userform UserForm1. Dat is korter en duidelijker en als je ooit de naam van je userform veranderd, blijft je code werken.

4. De sub "Toevoegen" kan je in de userformcode integreren binnen de "for next". Het is waar dat de code mooi indelen in procedures een goede zaak is, maar voor deze enkele regels leek het me beter zo. Zie ook hoe de "Redim" nu slechts 1 keer "gelezen" wordt, dus niet in de "loop".
(ik plaatste 52 in een constante nrBtns, zo is meteen je hele code up to date, wanneer je dit wijzigt. Er zijn zelfs nog betere technieken naargelang ...)
Dim clsCBN() As New Klasse1
Const nrBtns = 52

Private Sub cmbLaden_Click()
'andere code
        Dim btn As MSForms.CommandButton
        ReDim Preserve clsCBN(nrBtns)

        For n = 1 To nrBtns
        Set btn = Me.Controls("CommandButton" & n)
        Set clsCBN(n).CBN = btn
            With btn
            .Caption = Range("B" & n)
            .Enabled = True
            .BackColor = &H80FFFF
            End With
        Next n

5. Deze lijn
If Range("rngAantalGoed").Value < 26 Thenstond 2 keer in je code: dit kan je beter samenzetten.
6. Ook lijkt het me logisch om de userform te sluiten wanneer men wil stoppen. (unload me)
resultaat
        If Range("rngAantalGoed").Value < 26 Then
            If MsgBox("Het spel is nog niet klaar! (tijd loopt wél door!)" & Chr(13) & Chr(13) & _
                      "Wil je stoppen?", vbYesNo, "Niet smokkelen") = vbNo Then
            Exit Sub
            Else
            'Vroegtijdig afbreken, dan geen score
            Range("rngAantalGoed") = 0
            Range("rngAantalFout") = 0
            Unload Me
            Exit Sub
            End If
        End If

7. in verband met
ActiveWorkbook.Save
    Application.Quit
Je bedoelt eigenlijk "ThisWorkbook".
Het is niet fijn voor mij als gebruiker om mijn Excel gesloten te zien, wanneer ik tussendoor eens een spelletje wou spelen  :( .
mijn voorstel
ThisWorkbook.Close True
Hier en daar paste ik nog enkele dingen aan en de "lichtkrant schiet in actie vanaf 20 (kan je aanpassen)
            Range("rngAantalGoed") = Range("rngAantalGoed") + 1
'ingevoegde regel
            If Range("rngAantalGoed") = 20 Then UserForm1.move_buttons
toevoegen aan userform1-code
Sub move_buttons()
Dim n As Integer
Dim w As Single

w = CommandButton2.Left - CommandButton1.Left

'Application.EnableCancelKey = xlErrorHandler

On Error GoTo stopit

    Do
        For n = 1 To nrBtns
            With Me.Controls("CommandButton" & n)
            .Left = IIf(.Left < -w / 2, w * 12.5, .Left - 2)
            End With
        DoEvents
        Next n
    Loop While Me.Visible = True

stopit:
End Sub

Hiermee is niet alles gezegd  :D, het testen in de werkelijkheid zal nog veel leren.

voorbeeld in bijlage

beste groeten,
Erik

Offline LucB

  • Lid
  • *
  • Berichten: 55
  • Groeten Luc
Re: Check gelijke knoppen op een Userform
« Reactie #20 Gepost op: 16 april 2007, 14:52:09 »
Dag Erik,

Wat besteed je toch een tijd aan mijn opvoeding.

Ik ben je daar reuze dankbaar voor en neem het graag ter harte.

Met vriendelijke groet,
Luc
Windows XP Prof SP2, AMD DualCore 4400, 1024 MB RAM, NTFS, Norton AntiVirus, Internet Explorer 7.0, Outlook Express 6

 


www.combell.com