problemen met listboxen in formulier

Status
Niet open voor verdere reacties.

Marcbl

Gebruiker
Lid geworden
15 sep 2008
Berichten
7
Hoi Allemaal. Ik ben nog niet zolang bezig met VBA in combinatie met exel. Ik werk als verpleegkundige en wil onze patiëntenlijst die we gebruiken automatiseren, zodat er altijd up to date gegevens tbv onderzoek en informatie zijn. Niet in acces ivm licenties organisatie.
in het werkblad is er slechts 1 blad zichtbaar waar álle verzamelgegevens op zichtbaar zijn. Die haalt zijn gegevens van het 2e onzichtbare werkblad vandaan. 1e blad moet beveiligd zijn tbv computeranalfabeten die zelfs een worddocument nog laten vastlopen. Derhalve het 2e blad verborgen.
Via een formulier wil ik twee listboxen vullen: 1 tbv namen cliënt en 1 tbv selecteren lege kamers.
Dit is ten behoeve van overplaatsen cliënt binnen de afdeling (psychiatrie, open en gesloten). Daarnaast komt er nog een formulier tbv van ontslag. 1e formulier zou ook geschikt kunnen zijn om nieuwe cliënt in op te nemen.
Ik krijg de listboxen gevuld
Nu loop ik tegen het volgende aan:
De box voegd wel regels toe, ook al zijn ze niet te gebruiken (geen patient, of geen lege kamer).
Na het klikken van OK wordt de rij niet herkend, zodat er niet mee gemanipuleerd kan worden.
Wat doe ik fout????
de code:

Private Sub CmdCancel_Click()
Unload Me
End Sub

Private Sub CmdOK_Click()
MsgBox Selrow1
If Selrow1 = "" Then
MsgBox Selrow1 'hier heeft selrow1 al geen waarde meer ==> is verkeerd gedeclareerd
MsgBox "U moet een naam kiezen" 'zit fout in, blijft melden dat er geen naam gekozen is in listbox.
End If
End Sub


Private Sub ListBox2_Click()

Selrow2 = ListBox2.ListIndex + 2
MsgBox Selrow2
End Sub

Private Sub ListBox1_Click()

Selrow1 = ListBox1.ListIndex + 2
MsgBox Selrow1
End Sub


Private Sub UserForm_Activate()
Dim MyList1(35), MyList2(35)
Dim r, Selrow1, Selrow2 As Integer

Application.ShowToolTips = True
With ListBox1
.ColumnCount = 1
.ColumnWidths = 5
.Width = 90
.Height = 110
.ControlTipText = "klik op de Naam die je zoekt"
End With
With ListBox2 'deze wordt niet aangepast, weet niet waarom.
.ColumnCount = 1
.ColumnWidths = 5
.Width = 90
.Height = 110
.ControlTipText = "klik op de Kamer die je zoekt"
End With
For r = 0 To 35
'stel een lijst van te verplaatsen clienten samen en een lijst van lege kamers.
'Patientkamer = Cells(R, 1).Value 'geef de variable de waarde van cell, waarbij eerste getal
'de r de rij is en tweede getal de kolom (=omgekeerd tov range)
If Cells(r + 2, 2) = "" Then
MyList2(r) = Sheets("wijzigingspagina").Range("A" & r + 2)
MyList1(r) = "vrij"
Else
MyList1(r) = Sheets("wijzigingspagina").Range("B" & r + 2)
MyList2(r) = "bezet"
End If

Next r

'populate the list box
ListBox1.List = MyList1
ListBox2.List = MyList2
'nog te doen = lege regels uit mylist verwijderen, zonder dat de verwijzingen naar de juiste cell verdwijnt.


End Sub

in de worksheet is kolom A de kamer en kolom B de naam van de patiënt.
Door kolom B te testen weet ik of er een kamer vrij is. Kolom A zijn kamers, met niet opeenvolgende nummers (vonden de bouwers makkelijker).
Kolom A is echter na wijziging makkelijk te sorteren, waardoor alles weer goed staat.
Wie weet raad?
alvast bedankt.
 
Hieronder zie je stukje code. Je ziet dat iTel buiten de macro Begin is gedeclareerd. Stel dat je de macro gaat starten dan krijgt iTel de waarde 123 en behoudt iTel die waarde als de macro Eind wordt geactiveerd. De msgbox toont dus de waarde 123.
Zet je de dim op de plaats van de sterretjes dan is iTel binnen in de macro gedeclareerd en verliest het de waarde zodra de macro Eind wordt gestart.

Code:
Dim iTel As Integer

Sub Begin()
' ****************
iTel = 123
Eind
End Sub

Sub Eind()
MsgBox iTel
End Sub

Maar je maakt het jezelf onnodig moeilijk.
Als code gebruik je:

Code:
Private Sub ListBox1_Click()

[B]Selrow1 = ListBox1.ListIndex + 2[/B]
MsgBox Selrow1 
End Sub

Dus kan je ipv SelRow1 gebruik maken van Listbox1.ListIndex.
Als deze kleiner is dan 0 betekent dat er geen keuze is gemaakt.
Dus je hoeft helemaal geen SelRow1 en SelRow2 te gebruiken in je code.

Verder is het handig om de site te bekijken die SNB aangaf.

Als er vragen zijn dan hoor ik het wel.

Met vriendelijke groet,


Roncancio
 
te moeilijk doen...

Hoi RONCANCIO en SNB,
bedankt voor jullie reactie.
Als ik het goed begrijp moet de variabele buiten de sub userform gedeclareerd worden, wil iik er verder mee kunnen werken. Verder zegt RnCnaCio dus dat ik de volgende code kan toepassen om te kijken of er geselecteerd is:
If ListBox1.ListIndex < 0 then
MsgBox "U moet een naam kiezen"
end if
klopt dit?
groet
 
exit selrow1 en 2

Hoi RonCanCio,
ik kom er achter dat als ik dat doe, hij automatisch op de eerste cel = a1 terechtkomt. En die heeft de inhoud "kamernr". Dat wordt vervolgens weergegeven.
Hoe los ik dat dan op dat die ge-excludeerd wordt?
groet
 
Hoi RonCanCio,
ik kom er achter dat als ik dat doe, hij automatisch op de eerste cel = a1 terechtkomt. En die heeft de inhoud "kamernr". Dat wordt vervolgens weergegeven.
Hoe los ik dat dan op dat die ge-excludeerd wordt?
groet

Kan je een voorbeeld bestand bijvoegen?
Dat werkt wat makkelijker.
Uiteraard ontdaan van alle gevoelige informatie.
Dan kan ik beter zien wat er mis gaat.

Met vriendelijke groet,


Roncancio
 
problemen met listbox in formulier

Dit is nu opgelost dankzij de verschillende hierboven genoemde links. Het is wat puzzelen, maar uiteindelijk meerdere malen gelukt.
Bedankt voor de tips
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan