Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Werken met verschillende userforms in 1 formulier

928 views
Skip to first unread message

ges...@hotmail.com

unread,
Nov 17, 2006, 2:47:04 PM11/17/06
to
Hoi Allemaal.

Is het mogelijk om met verschillende userforms te werken in 1
formulier?
Ik wil een introductie userform als eerste laten zien bij het openen
van een formulier. Hierin wordt dan een keus gemaakt of men een
Userform wil invullen voor de taxi of voor de vluchtgegevens.
Wanneer men kiest voor de vluchtgegevens krijgt men een userform waarin
verschillende tekstvelden ingevuld moeten worden. Bij opslaan gaan een
aantal gegevens naar een soort database, zodat men later snel de
gegevens boven water kan halen. Bijvoorbeeld voor controle van de
facturen. Tevens wordt er een A4 uitgeprint met de gegevens over de
vlucht zoals vluchtnummer, vliegveld en tijden voor de desbetreffende
reiziger. Wanneer dit gebeurt is krijg ik een melding via een MsgBox
van "Wilt u ook een taxi bestellen?"
Als ik dan ja zeg dan komt het derde userformulier naar voren
(UserformTaxi)

Omdat veel van de vluchtgegevens nodig zijn voor de taxi zoek ik naar
een manier (formule) om bepaalde TextBoxen van UserformVluchten
rechtstreeks in te vullen in de TextBoxen van UserformTaxi.

Ook moet ik het UserformTaxi kunnen invullen zonder dat de
UserformVluchten ingevuld is, vandaar het UserformKeuze.
Is daar een mogelijkheid voor?

Ik hoop dat je me vraag begrijp?

Alvast bedankt
Gespeck

RaceEend

unread,
Nov 18, 2006, 1:51:40 AM11/18/06
to
ges...@hotmail.com wrote:

Vanuit een userform kan een volgende userform starten zoals je het
eerste userform hebt gestart.

--

ges...@hotmail.com

unread,
Nov 18, 2006, 10:39:12 AM11/18/06
to
Hoi.

Ik heb al drie Userforms gemaakt. Mijn vraag is eigenlijk of het
mogelijk is om een aantal textboxen die ik in userform2 heb ingevuld
mee kan nemen naar het 3de userform

Voorbeeld. Als ik in Userform 2 bij vluchtgegevens heb staan: "HV 1350
Taiwan" Heb ik deze gegevens ook nodig in het 3de Userform om de taxi
te bestellen indien nodig.
Je krijgt dan een verwijzing tussen de userforms (Userform 2 is een
invulform dat gebruikt wordt om de vluchtgegevens op te slaan in een
soort database)

Is het ook mogelijk om gegevens van een excelbestand in te voegen in
een userform?

Voorbeeld.
Via een combobox vul ik een naam in. Henk van Asperen. In het huidige
bestand wordt dan via een Vert.zoeken formule het complete adres
weergegeven van Henk van Asperen.
Het lijkt me veel mooier als ik dit adres te zien krijg in de
tekstboxen van een Userform.
Is dit mogelijk?
Nog even samengevat
Ik heb een userform met 1 combobox waarin de namen staan van een aantal
personen.
Op hetzelfde userform staan 4 Textboxen waar in dan het adres,
postcode, woonplaats en telefoon nummer in zouden moeten verschijnen
zodra er een naam in de combobox is geselecteerd.

Groeten

Gespeck


RaceEend (rot13) schreef:

Hans Le Roy

unread,
Nov 18, 2006, 12:48:52 PM11/18/06
to
ges...@hotmail.com wrote:

> Hoi.

> Groeten

> Gespeck


> RaceEend (rot13) schreef:

Beste,

Ja hoor. Maak een module, declareer daarin de variabelen die je nodig
hebt, en wijs in de code de waarde van de te onthouden teksvakken toe aan
die variabelen. Je kan die waarde dan altijd opvragen in een ander
formulier.

Vriendelijke groeten,

Hans


RaceEend

unread,
Nov 19, 2006, 3:28:48 AM11/19/06
to
ges...@hotmail.com wrote:

Dat kan, je kunt een gegevens uit een userform op elk moment opvragen
zolang de instantie van het userform actief is. Dit doe je door eerst
het userform te laden, dan te tonen (verbergen via .hide en niet via
Unload) en pas als alles klaar verwijderen (unload)

Voorbeeld (pseudo code)

Sub Start
load UserForm1
load UserForm2
load UserForm3

'In de code van Userform1 wordt userform2 gestart
userform1.show

unload Userform1
unload Userform2
unload Userform3
'Einde userforms
End Sub


in Userform1 twee knoppen (commandbutton1 en 2)

Private Sub CommandButton1_Click()
'Tonen van 2e userform
UserForm2.Show
End Sub

Private Sub CommandButton2_Click()
'Einde van invoer, nu terug naar routine Start
Me.Hide
End Sub

In userform2 een knop om te sluiten en een label (of textbox, etc)
Private Sub CommandButton1_Click()
Me.Hide
End Sub

Private Sub UserForm_Activate()
'Hiermee wordt de waarde van de textbox op Userform1
'overgenomen in de label op userform2
Me.Label1.Caption = UserForm1.TextBox1.Text
End Sub


2e vraag

Je hoeft niet via een werkblad een waarde op te zoeken
Stel dat de formule op het werkblad 'Blad1' erals volgt uitziet
=VERT.ZOEKEN(A1;B1:C100;2;ONWAAR)
-> zoekwaarde in cel A1
-> tabel waarin, in de eerste kolom, gezocht wordt B1:C100
-> het resultaat wordt uit 2e kolom gelezen
-> niet gevonden, dan fout.

In VBA wordt dit
Stel in Textbox1 de zoekwaarde (de naam bijvoorbeeld)
en in label1 moet het resultaat geplaatst worden.

In het Exit event van Textbox1 plaats je de volgende code:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
Me.Label1.Caption = WorksheetFunction.VLookup(Me.TextBox1.Text, _
Sheets("Blad1").Range("B1:C100"), 2, False)
End Sub

ges...@hotmail.com

unread,
Nov 20, 2006, 6:49:20 AM11/20/06
to
RaceEend,
Hartelijk bedankt voor je antwoord,
Hiermee kan ik heel wat mee oefenen.

Ik ben al een poosje bezig geweest om te kijken of ik de formule van
Vert.Zoeken ook kan toepassen als deze in een ander bestand staat.

Zit ik op de goede weg als ik i.p.v. Worksheets, Workbooks ervoor zet?

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
> On Error Resume Next

> Me.Label1.Caption = WorkbooksFunction.VLookup(Me.TextBox1.Text, _
> Workbooks("C\mijndocumenten\data.xls").Sheets("Blad1").Range("B1:C100"), 2, False)
> End Sub

Voor Horizontaal zoeken. Is het dan HLookup?

Nogmaals Hartelijk bedankt je heb me geweldig geholpen.

Groeten
Gespeck


RaceEend (rot13) schreef:

> ges...@hotmail.com wrote:

RaceEend

unread,
Nov 20, 2006, 3:38:29 PM11/20/06
to
ges...@hotmail.com wrote:

> RaceEend,
> Hartelijk bedankt voor je antwoord,
> Hiermee kan ik heel wat mee oefenen.
>
> Ik ben al een poosje bezig geweest om te kijken of ik de formule van
> Vert.Zoeken ook kan toepassen als deze in een ander bestand staat.
>
> Zit ik op de goede weg als ik i.p.v. Worksheets, Workbooks ervoor zet?

Ik zou zeggen gewoon proberen.
Hint:
Een workbook bevat worksheets bevat ranges
Dus als je workbooks zegt dan moet je ook worksheets zeggen om te komen
tot de ranges.
Als range zegt dat wordt het activeworkbook en activesheet gebruikt.

Als dit begrijpt dan weet je meer dan ik....;-)

RaceEend

unread,
Nov 20, 2006, 3:38:21 PM11/20/06
to
ges...@hotmail.com wrote:

> RaceEend,
> Hartelijk bedankt voor je antwoord,
> Hiermee kan ik heel wat mee oefenen.
>
> Ik ben al een poosje bezig geweest om te kijken of ik de formule van
> Vert.Zoeken ook kan toepassen als deze in een ander bestand staat.
>
> Zit ik op de goede weg als ik i.p.v. Worksheets, Workbooks ervoor zet?

Ik zou zeggen gewoon proberen.

ges...@hotmail.com

unread,
Nov 20, 2006, 4:10:37 PM11/20/06
to
Hoi RaceEend

Het is maar goed dat ik niet per uur betaald wordt voor mijn hobby, wat
moet ik nog veel leren met excel.

Ik krijg het wel voor elkaar om via onderstaande formule de gegevens
uit een ander bestand te krijgen. Maar het lukt me niet om dat bestand
verborgen te houden op het scherm.
Dus als ik de textbox in het userform invult en dan naar de volgende
cel gaat, opent de userform het bestand waarin ik de adressen heb
staan. Daarna krijg ik het niet weg, zonder dat ik op het kruisje van
het bestand drukt.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Workbooks.Open Filename:="C:\Documents and Settings\Bureaublad\Fax
taxi\adresgegevens.xls"

On Error Resume Next
Me.Label1.Caption = WorksheetFunction.HLookup(Me.TextBox1.Text, _
Workbooks("adresgegevens").Sheets("Horizontaal").Range("C1:H25"), 4,
False)
ActiveWorkbooks.Close
Workbooks("adresgegevens").Close

Heb je nog een hint voor me? Sorry voor het blijven stellen van vragen.
(Ik heb nl de eigenschap als ik ergens mee bezig ben dat ik het steeds
mooier en beter wil maken.)

Wanneer ik het niet voor elkaar krijg zal ik het adressen bestand als
een extra sheet in het taxi document moeten zetten. Het probleem is dat
het adressen bestand voor diverse andere toepassingen gebruikt wordt
die dan allemaal aangepast moet worden.

Nog een tweede vraag. (deze vind ik eigenlijk belangrijker)
Bij bovenstaande formule gaan we uit van TextBox1 waarin ik dan de naam
van de betreffende persoon zet. Dit zou ik graag zien met een ComboBox.
Dit heb ik met een aantal verwijzingen geprobeerd maar is me niet
gelukt. Zoals: wanneer ik in een combobox een naam selecteert dat deze
dan in een textbox geplaatst wordt. Helaas. Ook met verschillende
waarden achter de combobox zoals . value

Groeten

Gespeck


End Sub
RaceEend (rot13) schreef:

RaceEend

unread,
Nov 21, 2006, 1:28:29 PM11/21/06
to
ges...@hotmail.com wrote:

Om via VLOOKUP gegevens te lezen moet het bestand geopend zijn. Je een
gesloten Excel bestand benaderen via ADO maar volgens mij gaat dat een
paar stappen te ver. Bovendien dan kan je net zogoed kiezen om deze
gegevens in een database te plaatsen en daarin te zoeken.

Dus het alternatief, de gegevens plaatsen in een 'verborgen' sheet is
een goede en eenvoudige optie of de werkmap bij het opstarten van je
taxi document openen. Als je van deze werkmap (met de gegevens waarin
je gaat zoeken) een invoegtoepassing maakt dan is dit niet zichtbaar
voor de gebruiker (invoegtoepassing is niets anders dan de werkmap op
te slaan als .... invoegtoepassing).


>
> Nog een tweede vraag. (deze vind ik eigenlijk belangrijker)
> Bij bovenstaande formule gaan we uit van TextBox1 waarin ik dan de
> naam van de betreffende persoon zet. Dit zou ik graag zien met een
> ComboBox. Dit heb ik met een aantal verwijzingen geprobeerd maar is
> me niet gelukt. Zoals: wanneer ik in een combobox een naam selecteert
> dat deze dan in een textbox geplaatst wordt. Helaas. Ook met
> verschillende waarden achter de combobox zoals . value
>
> Groeten
>
> Gespeck
>

Stel een tabel in A1:B10 met in kolom 1 de namen en in kolom 2 (B) de
nummers of zoiets.

In de userform, in designmode, vul bij de combobox property Rowsource
de verwijzing naar de eerst kolom van de tabel, dus A1:A10 of als het
op een andere werkblad 'Blad1'!A1:A10

In het exit event van de combobox, deze wordt gestart zodra je een
andere control selecteer, dus de combobox verlaat (exit). plaats je de
volgende code

On Error Resume Next
Textbox1.Value=WorksheetFunction.VLOokup(Combobox1.Text,Sheets("Blad1").
Range("A1:B10"),2, False)

Als je een waarde selecteert in de combobox en daarna de combobox
verlaat wordt de geselecteerde waarde gezocht in de eerste kolom van
de tabel en als deze wordt gevonden (hetgeen altijd het geval is) dan
wordt de waarde uit kolom 2 in de textbox geplaatst.

Nu ik aan het schrijven ben besef ik dat het nog anders kan, namelijk.
Met een combobox (en ook listbox) kan je laten verwijzen naar meerdere
kolommen.

In de designmode wijzig je bij de combobox de volgende properties:
ColumnCount -> 2
ColumnWidths -> ;0 (dit betekent, eerst kolom tonen, tweede kolom geen
breedte dus niet tonen)
Rowsource -> 'Blad1'!A1:B10 (dus beide kolommen

In het Exit event van de combobox

If Combobox1.Listindex>-1 then _
TextBox1.Value=Combobox1.List(Combobox1.ListIndex,1)


Natuurlijk bovenstaande is niet getest op schrijffouten.

ges...@hotmail.com

unread,
Nov 22, 2006, 4:08:45 PM11/22/06
to
Hoi RaceEend

Volgens mij is het eindresultaat geworden wat ik ook wilde hebben,
misschien zelfs meer.

Ik heb nu onderstaande formule gebruikt om met een ComboBox een tekst
in een label te krijgen van het userform

Private Sub ComboBox1_Change()
Me.Label1.Caption = WorksheetFunction.HLookup(ComboBox1.Text, _

Sheets("Monteursgegevens").Range("C1:Y50"), 3, False)
Me.Label2.Caption = WorksheetFunction.HLookup(ComboBox1.Text, _

Sheets("Monteursgegevens").Range("C1:Y50"), 4, False)

' Enz.
End Sub

Ook het antwoord om een verborgen werkmap met de gegevens werkt. Alleen
doordat ik nu met verschillende userforms kan werken zou het
eindresultaat wel zo kunnen zijn dat alle gerelateerde documenten in
dit document gezet gaan worden.

Voor de ComboBox heb ik bij Rowsourse 'Monteursgegevens'!A1:A20 staan.
Is het ook mogelijk om in plaats van een kolom een rij te selecteren?
Ik heb nu een aparte kolom aangemaakt voor de gegevens van de ComboBox.
Echter de namen staan in hetzelfde bestand maar dan in Rij A1:Z1

Ook namens enkele van mijn collega's hartelijk bedankt voor je
antwoorden.

Groeten

Gespeck


RaceEend (rot13) schreef:

> ges...@hotmail.com wrote:

0 new messages