• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

3 VBA vraagjes

Status
Niet open voor verdere reacties.

Dionysos

Gebruiker
Lid geworden
7 nov 2008
Berichten
11
Hallo,

Ik ben bezig met een popupschermpje die informatie in een datablad in moet vullen, het schermpje lukt al aardig, en ook het invullen is al (gedeeltelijk) gelukt. Ik zit echter nog met aan paar problemen, en zou het erg fijn vinden als iemand mij hier uit de brand kan helpen!

Ik heb op deze manier een popupscherm ingevuld;

Private Sub CommandButton1_Click()
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 1).Value = Txtvoornaam.Text
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 2).Value = txtachternaam.Text
End Sub

Alleen dan iets uitgebreider. Dit lukt vooralsnog prima, alleen als de eerste kolom niet is ingevuld, word de vorige invoer overschreven.
Vraag 1 dus;
Ik wil in de eerst colom een index cijfer neer zetten, die met bovenstaande button er bij gezet word. Ik heb hier dingen geprobeerd in het excel blad, maar dat werkte niet, vandaar dat ik het ook onder deze button wil gooien. Ik kan mij voorstellen dat het begin hetzelfde moet zijn (Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 0).Value =) maar wat kan ik dan het beste bij value invullen?

Vraag 2;
In mijn popup formuliertje heb ik een paar dropdown keuze-menu's, waar definieer ik wat de opties hiervan moeten zijn?

Vraag 3;
Als je met enter door de verschillende invoervelden van het popupscherm gaat vliegt de cursus van het eerste naar het derde hokje, dan tweede dan zesde enzovoorts, ik kan ongetwijfeld ergens de volgorde toekennen, maar wist dit niet te vinden.

Alvast heel erg bedankt voor de hulp!

Groeten,
Carlo
 
Hallo,

Ik ben bezig met een popupschermpje die informatie in een datablad in moet vullen, het schermpje lukt al aardig, en ook het invullen is al (gedeeltelijk) gelukt. Ik zit echter nog met aan paar problemen, en zou het erg fijn vinden als iemand mij hier uit de brand kan helpen!

Ik heb op deze manier een popupscherm ingevuld;

Private Sub CommandButton1_Click()
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 1).Value = Txtvoornaam.Text
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 2).Value = txtachternaam.Text
End Sub

Alleen dan iets uitgebreider. Dit lukt vooralsnog prima, alleen als de eerste kolom niet is ingevuld, word de vorige invoer overschreven.
Vraag 1 dus;
Ik wil in de eerst colom een index cijfer neer zetten, die met bovenstaande button er bij gezet word. Ik heb hier dingen geprobeerd in het excel blad, maar dat werkte niet, vandaar dat ik het ook onder deze button wil gooien. Ik kan mij voorstellen dat het begin hetzelfde moet zijn (Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 0).Value =) maar wat kan ik dan het beste bij value invullen?

Vraag 2;
In mijn popup formuliertje heb ik een paar dropdown keuze-menu's, waar definieer ik wat de opties hiervan moeten zijn?

Vraag 3;
Als je met enter door de verschillende invoervelden van het popupscherm gaat vliegt de cursus van het eerste naar het derde hokje, dan tweede dan zesde enzovoorts, ik kan ongetwijfeld ergens de volgorde toekennen, maar wist dit niet te vinden.

Alvast heel erg bedankt voor de hulp!

Groeten,
Carlo

1. Persoonlijk zou ik het omdraaien.
Bijv.:
Rij = Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 0).Row
If Rij = 1 Then Rij = 2
Worksheets("Datablad").Range("A" & Rij) = TxtVoornaam.Value

2. Bij het initieren van het formulier of bij RowSource van het dropdownmenu.
3. Rechtermuisknop op formulier en dan kiezen voor Tabvolgorde (onderaan).

Met vriendelijke groet,


Roncancio
 
1. Persoonlijk zou ik het omdraaien.
Bijv.:
Rij = Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 0).Row
If Rij = 1 Then Rij = 2
Worksheets("Datablad").Range("A" & Rij) = TxtVoornaam.Value

2. Bij het initieren van het formulier of bij RowSource van het dropdownmenu.
3. Rechtermuisknop op formulier en dan kiezen voor Tabvolgorde (onderaan).

Met vriendelijke groet,


Roncancio
Vraag 2 en 3 ben ik uitgekomen, hartelijk dank!

Je antwoord op vraag 1 begrijp ik alleen niet helemaal... als ik nl overneem wat jij voorstelde, dan zou ik alle drie de regels over moeten nemen voor elk invoervakje? Ik heb er nl 12 in het formulier.
Ik dacht mijn probleem nu echter op te lossen, door het eerste invoerveld een dropdownmenu te laten zijn, waarbij het dus onmogelijk is het vak leeg te laten. Dit werkt wel, maar om een of andere reden word de eerst kolom nu op bijv row 11 geplaatst, en alle andere kolomen komen wel netjes op row 12. Oftewel de eerste kolom zit steeds een vakje te hoog, komt je dit bekend voor? Ik kan nl niet vinden wat ik fout doe...

Ik gebruik nu de volgende code (heb hem iets korter gemaakt anders word het hier zo'n lijst... gaat gewoon op dezelfde manier verder met adres etc);

Private Sub CommandButton1_Click()
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 0).Value = gender.Text
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 1).Value = voornaam.Text
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 2).Value = achternaam.Text
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 3).Value = telnummer.Text
Unload Me
End Sub
 
Het punt is dit:
Code:
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 0).Value = gender.Text
Bij bovenstaande code bepaal je de laatste rij in de A-kolom en vul je daar de gender in.
Vervolgens ga je opnieuw de laatste rij zoeken en aangezien je de gender heb ingevuld, verschuift de naam naar beneden.
Code:
Private Sub CommandButton1_Click()
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset(1, 0).Value = gender.Text
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset([B][COLOR="Red"]0[/COLOR][/B], 1).Value = voornaam.Text
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset([COLOR="Red"][B]0[/B][/COLOR], 2).Value = achternaam.Text
Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Offset([COLOR="Red"][B]0[/B][/COLOR], 3).Value = telnummer.Text
Unload Me
End Sub
Dit kan je simpel oplossen door de 1'en te vervangen door 0'en.
Mijn idee is/was om 1 keer de laatste rij te bepalen en de waarde die daaruit voortkwam te gebruiken.

Bijv.:
Code:
Private Sub CommandButton1_Click()
Dim lRij as Long
       lRij = Worksheets("Datablad").Range("A" & CStr(Rows.Count)).End(xlUp).Row+1
       Worksheets("Datablad").Range("A" & lRij).Value = gender.Text
       Worksheets("Datablad").Range("B" & lRij).Value = voornaam.Text
       Worksheets("Datablad").Range("C" & lRij).Value = achternaam.Text
       Worksheets("Datablad").Range("D" & lRij).Value = telnummer.Text
       Unload Me
End Sub

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Helemaal duidelijk nu! Stom dat ik dat zelf niet door had :o.

Hartelijk dank voor je hulp, en ik zal het topic op opgelost zetten :thumb:
 
Code:
Worksheets("Datablad").cells(lRij,1).resize(,4)=split(gender.text &"|" & voornaam.text & "|" & achternaam.text & "|" & telnummer.text,"|")


Doet hetzelfde als
Code:
Worksheets("Datablad").Range("A" & lRij).Value = gender.Text
Worksheets("Datablad").Range("B" & lRij).Value = voornaam.Text
Worksheets("Datablad").Range("C" & lRij).Value = achternaam.Text
Worksheets("Datablad").Range("D" & lRij).Value = telnummer.Text
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan