Help!

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

Hulp bij posten

Recente topics

Auteur Topic: userform met verschillende lstboxen  (gelezen 39992 keer)

0 leden en 1 gast bekijken dit topic.

Offline LiliC

  • Lid
  • *
  • Berichten: 35
Re: userform met verschillende lstboxen
« Reactie #105 Gepost op: 13 maart 2021, 12:19:02 »
hey Albert,
Alweer bedankt voor de snelle reactie!

ik krijg wel een foutmelding...
"Object vereist"
???
Ik hoef toch maar enkel de bestaande code te verwijderen in sub toevoegen en deze te vervangen met jou code toch?

Alvast bedankt,

Met vriendelijke groet,

Lili

Offline LiliC

  • Lid
  • *
  • Berichten: 35
Re: userform met verschillende lstboxen
« Reactie #106 Gepost op: 13 maart 2021, 12:22:28 »
@Albert,

Nu met screenshots

Met vriendelijke groet,

Lili

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: userform met verschillende lstboxen
« Reactie #107 Gepost op: 13 maart 2021, 12:49:23 »
Volgens mij gebruik je de code van @Warme bakkertje
Groet,

Albert

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: userform met verschillende lstboxen
« Reactie #108 Gepost op: 13 maart 2021, 13:09:29 »
Of 'ie tatenlos werkt kan ik niet helemaal met zekerheid zeggen ;)
Zoek de verschillen ;D
Groet,

Albert

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.190
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: userform met verschillende lstboxen
« Reactie #109 Gepost op: 13 maart 2021, 13:22:14 »
enkel ter opmerking: LiliC, je screenshot in #106 komt niet overeen met je bijlage in #106

:) 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 AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: userform met verschillende lstboxen
« Reactie #110 Gepost op: 13 maart 2021, 14:17:52 »
Met dank aan  @Warme bakkertje toch nog een wijziging op FrmMedicijnen  combobox3_Change
Je bent nooit te oud om iets te leren. ;D

Private Sub ComboBox3_Change()
Dim W As String, H As String, T As String

With Sheets("Database").ListObjects("tblMeds")
        evalstr = Evaluate("Match(" & Chr(34) & ComboBox1.Value & Chr(34) & "&CHAR(5)&" & Chr(34) & ComboBox3.Text & Chr(34) & "," & _
                        .Range.Columns(1).Address(, , , True) & "&CHAR(5)&" & .Range.Columns(2).Address(, , , True) & ",0)")

        'evalstr geeft het rijnummer van de sheet
                       
        If Not IsError(evalstr) Then
                       
            W = .DataBodyRange.Cells(evalstr - 1, 3).Value 'evalstr geeft het rijnumer van het blad (evalstr-1 is het listrownr. van  tblMeds)
            H = .DataBodyRange.Cells(evalstr - 1, 4).Value
            T = .DataBodyRange.Cells(evalstr - 1, 5).Value
           
           

            If MsgBox("Medicijn voor deze patiënt is reeds ingevoerd." & vbCrLf & vbCrLf & "Wil je de medicatie aanpassen ?" & vbCrLf _
            & vbCrLf & "naam medicijn: " + ComboBox3.Value _
            & vbCrLf & "wanneer          : " + W _
            & vbCrLf & "hoeveel            : " + H _
            & vbCrLf & "totaal               : " + T, _
            vbExclamation + vbYesNoCancel, "WAARSCHUWING") = vbYes Then
           
            If .ListRows.Count > 0 Then
                .ListRows(evalstr - 1).Delete 'verwijderen huidige medicatie
            Else
                .ListRows(evalstr-1).ClearContents
            End If
               
                MsgBox "LET OP !! medicatie is verwijderd uit de lijst" & vbCrLf & _
                      "Je kunt nu de medicatie opnieuw invoeren."
                     
                ComboBox2.SetFocus
            Else
                ComboBox3 = ""
               
            End If
       End If
End With

ComboBox2.SetFocus
       
End Sub
Groet,

Albert

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: userform met verschillende lstboxen
« Reactie #111 Gepost op: 13 maart 2021, 17:14:53 »
Hallo,

Citaat
evalstr = Evaluate("Match(" & Chr(34) & ComboBox1.Value & Chr(34) & "&CHAR(5)&" & Chr(34) & ComboBox3.Text & Chr(34) & "," & _
                        .Range.Columns(1).Address(, , , True) & "&CHAR(5)&" & .Range.Columns(2).Address(, , , True) & ",0)")
???

Met verbazing dus de laatste posts bekeken. Wordt het ontegensprekelijke formidabele nut van echte tabellen niet integraal overboord gekieperd als jullie nu terug met bladrijen en -kolommen gaan jongleren?
Of is er gewoon op spielerei overgeschakeld (dan heb ik niets gezegd)?

Een mogelijkheid om te checken of, en zo ja wat, al medicatie is gegeven (kan naar keuze ook met IsError):
If WorksheetFunction.CountIf([tblMeds[Wat]], ComboBox3.Value) > 0 Then
   rij = WorksheetFunction.Match(ComboBox3.Value, [tblMeds[Wat]], 0)
   W = Application.Index([tblMeds[Wanneer]], rij)
   H = Application.Index([tblMeds[Hoeveel]], rij)
   T = Application.Index([tblMeds[Totaal]], rij)

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: userform met verschillende lstboxen
« Reactie #112 Gepost op: 13 maart 2021, 17:56:11 »
IK heb jouw voorstel niet getest, ben toch bang dat we dan de mist in gaan.
Je moet nml. per patiënt kijken of het medicijn op zijn/haar lijst staat.
Best mogelijk dat 5 patiënten paracetamol gebruiken, maar patiënt AAA niet.
Of mis ik iets :help:
Groet,

Albert

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: userform met verschillende lstboxen
« Reactie #113 Gepost op: 13 maart 2021, 18:30:44 »
Ha ja, dat kan... door een veelvoud aan bijlagen was ik de draad waarschijnlijk een beetje kwijt.
Elk zijn mening natuurlijk, maar ik blijf het ver gezocht vinden, en zou dan (voor mezelf!) de voorkeur geven aan de tabel per rij uitlezen, eventueel door gebruik te maken van een array, dat gaat immers aan lichtsnelheid.
Maar 't zal wel een fout zijn die ik regelmatig maak: ik probeer altijd code te schrijven die voor zoveel mogelijk mensen begrijpelijk is...
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: userform met verschillende lstboxen
« Reactie #114 Gepost op: 13 maart 2021, 22:25:00 »
De code heb ik klakkeloos overgenomen uit een bijdrage van  @Warme bakkertje.
En eerlijk: heeft me heel wat google-tijd gekost om deze  te doorgronden.
Wil je de code die jij bedoelt eens uploaden.?
Groet,

Albert

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: userform met verschillende lstboxen
« Reactie #115 Gepost op: 14 maart 2021, 09:55:32 »
Dag Albert,

Citaat
heeft me heel wat google-tijd gekost om deze  te doorgronden
't Verbaast me niets, ik vind ze ook eerder passen onder "kijk moeder, zonder handen"

Een (hopelijk door iedereen) beter te begrijpen methode is bv.
With Sheets("Database").ListObjects("tblMeds")
    For rij = 1 To .ListRows.Count
        If Application.Index([tblMeds[Patient]], rij) = ComboBox1.Value And Application.Index([tblMeds[Wat]], rij) = ComboBox3.Value Then
            gevonden = True
            Exit For
        End If
    Next rij
    If gevonden = True Then
        Dim W As String, H As String, T As String
        W = Application.Index([tblMeds[Wanneer]], rij)
        H = Application.Index([tblMeds[Hoeveel]], rij)
        T = Application.Index([tblMeds[Totaal]], rij)
        (enz)

Alhoewel je maar om één code vroeg krijg je er twee. Deze (eerlijk duurt het langst, het principe is niet door mij bedacht) is een fractie hoger niveau maar ook zonder lus:
With Sheets("Database").ListObjects("tblMeds")
    Names.Add "zoek", ComboBox1.Value & "|" & ComboBox3.Value
    rij = [MATCH(zoek,tblMeds[Patient] & "|" & tblMeds[Wat],0)]
    If IsNumeric(rij) Then
        (enz)

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: userform met verschillende lstboxen
« Reactie #116 Gepost op: 14 maart 2021, 11:00:07 »
Zelf ben ik ook op zoek gegaan naar een code die misschien beter te volgen is.
Tevens heb ik nog een controle toegevoegd op de maximale medicatie per dag.(zie commandbutton1)
Op straffe van weer een voorbeeldbestand, toch maar toegevoegd.
  Private Sub ComboBox3_Change()
       
 With Sheets("Database").Range("tblMeds[Patient]")
       
    For Each c In Sheets("Database").Range("tblMeds[Patient]")
        If c.Value = ComboBox1.Value And c.Offset(, 1).Value = ComboBox3.Value Then
            If MsgBox("Medicijn voor deze patiënt is reeds ingevoerd." & vbCrLf & vbCrLf & _
                      "WIL JE DE MEDICATIE AANPASSEN ?" & vbCrLf _
                       & vbCrLf & "naam medicijn: " & ComboBox3.Value _
                       & vbCrLf & "wanneer          : " & c.Offset(, 2).Value _
                       & vbCrLf & "hoeveel            : " & c.Offset(, 3).Value _
                       & vbCrLf & "totaal               : " & c.Offset(, 4).Value, _
                      vbExclamation + vbYesNo, "WAARSCHUWING") = vbNo Then
                      ComboBox3 = ""
                      Exit For
            Else
                       ComboBox2 = c.Offset(, 2).Value
                       TextBox2 = c.Offset(, 3).Value

                      Sheets("Database").ListObjects("tblMeds").ListRows(c.Row - 1).Delete 'verwijder het medicijn uit de lijst van de patient
                      MsgBox "Het medicijn is verwijderd uit de medicijnlijst van de patient."
                      ComboBox2 = ""
                      TextBox2 = ""
                      TextBox3 = ""
                      ComboBox2.SetFocus
                      Exit For
            End If
        End If
       
    Next c
 End With

       
End Sub     
 
Groet,

Albert

Offline LiliC

  • Lid
  • *
  • Berichten: 35
Re: userform met verschillende lstboxen
« Reactie #117 Gepost op: 14 maart 2021, 12:31:34 »
@Albert,

Je hebt blijkbaar de gave om ook aan mindreading te doen  ;D ;D ;D

Ik ben hier bezig om alles even netjes op punt te zetten met wat nog zou kunnen ( indien mogelijk natuurlijk)
en wat blijkt .... je komt hier al met een voorbeeld.

@iedereen

Ik zou anders voorstellen om eventjes hier alles on hold te plaatsen tot ik het bestand volledig klaar heb en dit hier plaats dan.
zodoende kan dan vraag per vraag afgewerkt worden.

Lijkt dit jullie wat? Nu komen er hier codes terecht waarvan ik het bos door bomen van het bomenbos niet meer zie  8) ::) :-[ :-\
 :) :)

ik hoor het graag mochten jullie er hier anders over denken.

Maar laat één zaak al zeker zijn !!!
Het is van diamant stilaan naar de "pink star diamond" aan het evolueren.
en daar ben ik al heel dankbaar voor!!!

ondertussen lieve mensen geniet vandaag van een lekkere stukje cake, kop koffie en dan zien we later verder.

bedankt lieve mensen!!!
Met vriendelijke groet,

Lili

Offline Warme bakkertje

  • Volledig lid
  • **
  • Berichten: 215
  • Geslacht: Man
Re: userform met verschillende lstboxen
« Reactie #118 Gepost op: 14 maart 2021, 13:45:47 »
Uit jullie commentaren blijkt nog maar eens dat de Evaluate-methode bij de doorsnee VBA gebruiker eerder onbekend is en ZEER ondergewaardeerd.

Bovendien is deze methode sneller dan eender welke Loop in VBA.

Wat gebeurt is een werkbladformule die vertaald wordt naar een door Evaluate leesbare string die dan geëvalueerd wordt.

En aangezien we allemaal weten dat werkbladformules nog steeds sneller zijn dan eender welke VBA-code.......

Maar goed, als dit de teneur is als je eens iets Out Of The Box introduceert dan hoeft  het voor mij niet meer en hou ik het in deze thread voor bekeken.

Nog veel succes ermee.
Windows 10 Home   NLD 64bit

Microsoft Office Professional Plus 2016 US

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: userform met verschillende lstboxen
« Reactie #119 Gepost op: 14 maart 2021, 14:09:49 »
Zoals je zelf al aangeeft is de evaluate methode bij de doorsnee VBA gebruiker onbekend.
Ik heb behoorlijk wat tijd nodig gehad om deze te doorgronden. Of ik het helemaal begrijp ?, de toekomst zal het leren.
Zelf denk ik dat de meeste volgers zich de moeite niet nemen en dus afhaken. ( het werkt, maar vraag me niet hoe) :help:

san rancune,
Misschien kun je eens (als VBA expert) een topic starten waar je het gebruik van evaluate uitlegt.





Groet,

Albert

 


www.combell.com