• 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.

vraag op zoeken , tonen medewerker naar uitbreiding bestelbon

Status
Niet open voor verdere reacties.

grema

Gebruiker
Lid geworden
2 dec 2006
Berichten
659
Via onderstaande vraag van Faruknl
( prachtig resultaat trouwens van allen samen )

http://www.helpmij.nl/forum/showthread.php?t=276535

heb ik enkele aanpassingen aangebracht

voor een bestelbon te maken .. Heb mezelf vastgezet ! :o

In bijlage wat ik er mee uitspookte ... loopt vast maar zie niet meer waar :confused:

Weet iemand raad ??

thanks

grema
 
Laatst bewerkt:
Waar loop je precies vast? onder welke knop gaat het fout?

Groet,
Ferenc
 
Ferenc,

Het gaat fout bij het ingeven van een nieuwe bestelling .
( Rest weet ik nog niet )

In een vorige versie wijzigde ik alleen de schermen om in te vullen ( doen draaide alles nog ) Dan ben ik gaan wijzigen in VB ( ken er dan ook niks van .. maar dacht ; eerst proberen dan vragen ) Dus nu ik reeds de visuele stukken kon aanpassen dacht ik Probeer ook maar de rest ... Goed fout dus .

Test je het even ?

Grema
 
Denk dat de fout lag in de volgende code:
Code:
Private Sub UserForm_Initialize()
'hier komt de code welke wordt uitgevoerd als het userform wordt geladen

'zet de cursus in vakje Naam
txbVoornaam.SetFocus

'maak de keuze vakjes leeg
chbLijst1 = False
chbLijst2 = False

'maak alle textboxen leeg
txbVoornaam.Text = ""
'txbReferentie.Text = ""
'txbTelefoonnummer.Text = ""
'txbgsm.Text = ""
'txbArt1.Text = ""
'txbAantal1.Text = ""
'txbArt2.Text = ""
'txbAantal2.Text = ""
'txbArt3.Text = ""
'txbAantal3.Text = ""
'txbArt4.Text = ""
'txbAantal4.Text = ""
'txbKlantnr.Text = ""
'txbBtw.Text = ""
'txbBesteldata.Text = ""

End Sub

Ten eerste had je hier de aanroep per ongeluk van weggelaten: Private Sub UserForm_Initialize()
Ten tweede: stond je focus (de cel waarin je cursor begint in een textbox welke helemaal niet in je form aanwezig is. txbNaam.SetFocus en dat moet zijn txbVoornaam.SetFocus

Let er dus op dat je de namen van de textboxen gebruikt zoals deze in je eigenschappen venster staan (F4 in je vba-editor) anders blijft excel zoeken naar deze naam en gebeurt er weinig.

Succes,
Ferenc

ps.
heb bij de overige textboxen een ' geplaatst zodat je deze eerst kan controleren of ze wel bestaan in je form.
 
Tevens zit er ook nog een fout in de code onder je opslaan knop:
Code:
Private Sub Opslaan_Click()
Dim MyRange             As Variant
Dim c                   As Range
Dim i                   As Long

Set MyRange = Worksheets("bestel_lijst")
Set MyRangeII = Worksheets("bestel_lijst2")

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = False

If txb[COLOR="Red"]Voornaam[/COLOR] <> "" And [COLOR="red"]txbReferentie.Text[/COLOR] <> "" Then

verander txbNaam naar txbVoornaam
en txbReferentie heeft op je formulier nog steeds als eigenschap de naam txbAchternaam.
 
Tevens de code voor onder de opslaan knop iets aangepast, je hoeft alleen de textboxnamen nog te controleren en dan zou hij het weer geheel moeten doen.

Code:
Private Sub Opslaan_Click()
Dim MyRange             As Variant
Dim c                   As Range
Dim i                   As Long

Set MyRange = Worksheets("bestel_lijst")
Set MyRangeII = Worksheets("bestel_lijst2")

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = False

If txbVoornaam <> "" And txbReferentie.Text <> "" Then

    If chbLijst1 = True Then
    
        'Plaats eerst een popup schermpje om te vragen of de gegevens echt opgeslagen dienen te worden
        response = MsgBox("Weet u zeker dat u deze gegevens wilt opslaan op blad 1?", vbYesNo, Title:="Gegevens opslaan?")
        'is het antwoord nee verlaat dan het scherm
        If response = vbNo Then

            Exit Sub
            
        'is het antwoord ja, voer dan de volgende code uit
        Else
        
            'waar gaan we opslaan
            legeregel = MyRange.Range("A" & Rows.Count).End(xlUp).Row + 1
            
            If txbNaam <> "" And txbReferentie.Text <> "" Then
                MyRange.Range("A" & legeregel) = txbVoornaam.Text
                MyRange.Range("B" & legeregel) = txbReferentie.Text
                MyRange.Range("C" & legeregel) = txbTelefoonnummer.Text
                MyRange.Range("D" & legeregel) = txbgsm.Text
                MyRange.Range("E" & legeregel) = txbArt1.Text
                MyRange.Range("F" & legeregel) = txbAantal2.Text
                MyRange.Range("H" & legeregel) = txbAantal1.Text
                MyRange.Range("G" & legeregel) = txbArt2.Text
                MyRange.Range("I" & legeregel) = txbArt3.Text
                MyRange.Range("J" & legeregel) = txbAantal3.Text
                MyRange.Range("K" & legeregel) = txbArt4.Text
                MyRange.Range("L" & legeregel) = txbAantal4.Text
                MyRange.Range("M" & legeregel) = txbKlantnr.Text
                MyRange.Range("N" & legeregel) = txbBtw.Text
                MyRange.Range("O" & legeregel) = txbBesteldata.Text
            Else
                MsgBox "Vul alle verplichte velden in?"
                Exit Sub
            End If
            
        'end if response is no
        End If
    
    'als er moet worden opgeslagen in lijst2
    ElseIf chbLijst2 = True Then
    
        'Plaats eerst een popup schermpje om te vragen of de gegevens echt opgeslagen dienen te worden
        response = MsgBox("Weet u zeker dat u deze gegevens wilt opslaan op blad 2?", vbYesNo, Title:="Gegevens opslaan?")
        'is het antwoord nee verlaat dan het scherm
        If response = vbNo Then

            Exit Sub
            
        'is het antwoord ja, voer dan de volgende code uit
        Else
            'waar gaan we opslaan
            legeregel = MyRangeII.Range("A" & Rows.Count).End(xlUp).Row + 1
            
            If txbVoornaam <> "" And txbReferentie.Text <> "" Then
                MyRangeII.Range("A" & legeregel) = txbVoornaam.Text
                MyRangeII.Range("B" & legeregel) = txbReferentie.Text
                MyRangeII.Range("C" & legeregel) = txbTelefoonnummer.Text
                MyRangeII.Range("D" & legeregel) = txbgsm.Text
                MyRangeII.Range("E" & legeregel) = txbArt1.Text
                MyRangeII.Range("F" & legeregel) = txbAantal1.Text
                MyRangeII.Range("G" & legeregel) = txbArt2.Text
                MyRangeII.Range("H" & legeregel) = txbAantal2.Text
                MyRangeII.Range("I" & legeregel) = txbArt3.Text
                MyRangeII.Range("J" & legeregel) = txbAantal3.Text
                MyRangeII.Range("K" & legeregel) = txbArt4.Text
                MyRangeII.Range("L" & legeregel) = txbAantal4.Text
                MyRangeII.Range("M" & legeregel) = txbKlantnr.Text
                MyRangeII.Range("N" & legeregel) = txbBtw.Text
                MyRangeII.Range("O" & legeregel) = txbBesteldata.Text
            Else
                MsgBox "Vul alle verplichte velden in?"
                Exit Sub
            End If
            
        'end if response is no lijst2
        End If

    Else
        MsgBox "Kies een blad om in op te kunnen slaan?"
        Exit Sub
    End If

Else
    MsgBox "Vul alle verplichte velden in?"
    Exit Sub
End If

MsgBox "bestelling is toegevoegd!"

response = MsgBox("Wilt u nog een nieuwebestelling toevoegen?", vbYesNo, Title:="Gegevens opslaan?")
    If response = vbNo Then
        Me.Hide
        Unload Me
        
    Else
        
        UserForm_Initialize
        
    End If

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = True
End Sub

Succes.

Groet,
Ferenc
 
Probeer dit laatste even , t gaat wat snel .

Een " textbox " kan ik die dan niet aanpassen ?? En waar vindt ik die dan ?:(


Probeer ondertussen uw laatste versie :D

grema
 
Ik bedoel de naam van de textboxen welke je ze meegeeft in het eigenschappen venster moet overeenkomen met de namen welke je in je code gebruikt. Anders loopt het natuurlijk allemaal in de soep :(.

vb.
jij hebt bijvoorbeeld in de code de naam van txbTelefoonnummer2 veranderd in txbgsm maar op je userform heet deze nog txbTelefoonnummer2.

Als je mijn codes van hierboven overneemt en de namen van de textboxen controleerd dan moet het allemaal werken.

Groet,
Ferenc
 
Laatst bewerkt:
'k loop weer vast .


compileerfout; bij die userform (maar k weet niet dewelke of heb een stukje programma overgeslagen ) " er mogen alleen opmerkingen staan na END...)


stuur in bijlage nog eens men bestand
( begin er stilaan iets van te verstaan maar k zie 't misschien te groot voor een eerste maal)
 
Laatst bewerkt:
Een kleine introductie:
Een macro begint altijd met
Sub naamvan demacro()

en wordt gesloten met
End sub.

Hiertussen wordt de code welke moet worden uitgevoerd gezet.
Als je hier nogmaals een End sub plaatst dan wordt de macro eerder afgesloten dan de bedoeling is.
In jouw geval staat er nog een stuk code nadat de macro is gesloten.
Excel geeft bij jou nu ook de foutmelding:
Er mogen alleen opmerkingen staan na End sub (zeg maar buiten de macros).

Her rode gedeelte staat niet tussen de sub en end sub in:
Code:
Private Sub UserForm_Initialize()
'hier komt de code welke wordt uitgevoerd als het userform wordt geladen

'zet de cursus in vakje Naam
txbVoornaam.SetFocus

'maak de keuze vakjes leeg
chbLijst1 = False
chbLijst2 = False

'maak alle textboxen leeg
txbVoornaam.Text = ""
'txbReferentie.Text = ""
'txbTelefoonnummer.Text = ""
'txbgsm.Text = ""
'txbArt1.Text = ""
'txbAantal1.Text = ""
'txbArt2.Text = ""
'txbAantal2.Text = ""
'txbArt3.Text = ""
'txbAantal3.Text = ""
'txbArt4.Text = ""
'txbAantal4.Text = ""
'txbKlantnr.Text = ""
'txbBtw.Text = ""
'txbBesteldata.Text = ""

End Sub
[COLOR="Red"]'zet de cursus in vakje Naam
txbVoornaam.SetFocus

'maak de keuze vakjes leeg
chbLijst1 = False
chbLijst2 = False

'maak alle textboxen leeg
txbNaam.Text = ""
txbReferentie.Text = ""
txbTelefoonnummer.Text = ""
txbgsm.Text = ""
txbArt1.Text = ""
txbAantal1.Text = ""
txbArt2.Text = ""
txbAantal2.Text = ""
txbArt3.Text = ""
txbAantal3.Text = ""
txbArt4.Text = ""
txbAantal4.Text = ""
txbKlantnr.Text = ""
txbBtw.Text = ""
txbBesteldata.Text = ""

End Sub[/COLOR]

Haal het rode gedeelte uit je code en hij zou moeten werken.

Groet,
Ferenc

ps.
Een opmerking geef je aan met een 'teken voor de regel, hierdoor wordt deze regel ook groen.
 
Zie nu ook dat je de naam van de textbox hebt veranderd naar txbNaam
Nu moet de code dus in jouw formulier zijn:
Code:
Private Sub UserForm_Initialize()
'hier komt de code welke wordt uitgevoerd als het userform wordt geladen

'zet de cursus in vakje Naam
txbNaam.SetFocus

'maak de keuze vakjes leeg
chbLijst1 = False
chbLijst2 = False

'maak alle textboxen leeg
txbNaam.Text = ""
'txbReferentie.Text = ""
'txbTelefoonnummer.Text = ""
'txbgsm.Text = ""
'txbArt1.Text = ""
'txbAantal1.Text = ""
'txbArt2.Text = ""
'txbAantal2.Text = ""
'txbArt3.Text = ""
'txbAantal3.Text = ""
'txbArt4.Text = ""
'txbAantal4.Text = ""
'txbKlantnr.Text = ""
'txbBtw.Text = ""
'txbBesteldata.Text = ""

End Sub
 
Code erutig gehaald , werkt nog niet

Start zelf zijn scherm niet meer op bij bestelling invoeren :confused:
 
nu nog effectief de txvox aanpassen

Je bent weer te snel voor me :)

Probeer dit even
 
Probeer deze versie eens.

Alleen de tovoeging werkt.
Als je die code goed doorneemt dan moet het goed moeglijk zijn om ook de andere formulieren aan te passen.

En anders ............. post je vraag op het forum :)


Groet en prettige avond,
Ferenc
 

Bijlagen

Thanks


Probeer dit nog even uit en duik dan m en nest in , moet er om 6.30 uit

(werk)

Tot een van de ... of straks al :)

Kreeg nu foutmelding Dubbel zinnege naam txbNaam_Change

Maar probeer toch nog even uw copi versie .
 
Ferenc en collegas ,

Alles aangepast ...' T WERKT... MAAR ....

bijkomende problemen ::confused:

1) Indien ik het bestand dat ik deze morgen aanpaste en liet draaien , nu opnieuw open op een andere PC laat draaien dan kan ik de gegevens van deze ochtend die normaal in de lijsten bliven staan zijn NIET MEER OPROEPEN

2) Hoe kan ik van een " VERPLICHT in te vullen veld " een NIET VERPLICHT in te vullen veld maken.



In bijlage : laatste verise .
 
Laatst bewerkt:
Antwoord vraag 1:
Raar. Heb je wel de juiste versie meegenomen?
Werk de versie zowiezo wel geheel op de ander pc?
Verschillende versies van Excel zou niet uit moeten maken.

Antwoord op vraag twee:
Haal uit de rood gemaakte regels je textbox en er wordt niet meer op gecxontroleerd of hij leeg is bij het versturen.

Code:
rivate Sub Opslaan_Click()
Dim MyRange             As Variant
Dim c                   As Range
Dim i                   As Long

Set MyRange = Worksheets("bestel_lijst")
Set MyRangeII = Worksheets("bestel_lijst2")

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = False

If txbVoornaam <> "" And txbReferentie.Text <> "" Then

    If chbLijst1 = True Then
    
        'Plaats eerst een popup schermpje om te vragen of de gegevens echt opgeslagen dienen te worden
        response = MsgBox("Weet u zeker dat u deze gegevens wilt opslaan op blad 1?", vbYesNo, Title:="Gegevens opslaan?")
        'is het antwoord nee verlaat dan het scherm
        If response = vbNo Then

            Exit Sub
            
        'is het antwoord ja, voer dan de volgende code uit
        Else
        
            'waar gaan we opslaan
            legeregel = MyRange.Range("A" & Rows.Count).End(xlUp).Row + 1
            
[COLOR="Red"]            If txbVoornaam <> "" And txbReferentie.Text <> "" And txbGSM.Text <> "" And txbTelefoonnummer.Text <> "" And txbBesteldata.Text <> "" Then[/COLOR]
                MyRange.Range("A" & legeregel) = txbVoornaam.Text
                MyRange.Range("B" & legeregel) = txbReferentie.Text
                MyRange.Range("C" & legeregel) = txbTelefoonnummer.Text
                MyRange.Range("D" & legeregel) = txbGSM.Text
                MyRange.Range("E" & legeregel) = txbArtikel1.Text
                MyRange.Range("F" & legeregel) = txbArtikel1aantal.Text
                MyRange.Range("H" & legeregel) = txbArtikel2.Text
                MyRange.Range("G" & legeregel) = txbArtikel2aantal.Text
                MyRange.Range("I" & legeregel) = txbArtikel3.Text
                MyRange.Range("J" & legeregel) = txbArtikel3aantal.Text
                MyRange.Range("K" & legeregel) = txbArtikel4.Text
                MyRange.Range("L" & legeregel) = txbArtikel4aantal.Text
                MyRange.Range("M" & legeregel) = txbKlantnummer.Text
                MyRange.Range("N" & legeregel) = txbBTWnummer.Text
                MyRange.Range("O" & legeregel) = txbBesteldata.Text
            Else
                MsgBox "Vul alle verplichte velden in?"
                Exit Sub
            End If
            
        'end if response is no
        End If
    
    'als er moet worden opgeslagen in lijst2
    ElseIf chbLijst2 = True Then
    
        'Plaats eerst een popup schermpje om te vragen of de gegevens echt opgeslagen dienen te worden
        response = MsgBox("Weet u zeker dat u deze gegevens wilt opslaan op blad 2?", vbYesNo, Title:="Gegevens opslaan?")
        'is het antwoord nee verlaat dan het scherm
        If response = vbNo Then

            Exit Sub
            
        'is het antwoord ja, voer dan de volgende code uit
        Else
            'waar gaan we opslaan
            legeregel = MyRangeII.Range("A" & Rows.Count).End(xlUp).Row + 1
            
[COLOR="red"]            If txbVoornaam <> "" And txbReferentie.Text <> "" And txbGSM.Text <> "" And txbTelefoonnummer.Text <> "" And txbBesteldata.Text <> "" Then[/COLOR]
                MyRangeII.Range("A" & legeregel) = txbVoornaam.Text
                MyRangeII.Range("B" & legeregel) = txbReferentie.Text
                MyRangeII.Range("C" & legeregel) = txbTelefoonnummer.Text
                MyRangeII.Range("D" & legeregel) = txbGSM.Text
                MyRangeII.Range("E" & legeregel) = txbArtikel1.Text
                MyRangeII.Range("F" & legeregel) = txbArtikel1aantal.Text
                MyRangeII.Range("H" & legeregel) = txbArtikel2.Text
                MyRangeII.Range("G" & legeregel) = txbArtikel2aantal.Text
                MyRangeII.Range("I" & legeregel) = txbArtikel3.Text
                MyRangeII.Range("J" & legeregel) = txbArtikel3aantal.Text
                MyRangeII.Range("K" & legeregel) = txbArtikel4.Text
                MyRangeII.Range("L" & legeregel) = txbArtikel4aantal.Text
                MyRangeII.Range("M" & legeregel) = txbKlantnummer.Text
                MyRangeII.Range("N" & legeregel) = txbBTWnummer.Text
                MyRangeII.Range("O" & legeregel) = txbBesteldata.Text
            Else
                MsgBox "Vul alle verplichte velden in?"
                Exit Sub
            End If
            
        'end if response is no lijst2
        End If

    Else
        MsgBox "Kies een blad om in op te kunnen slaan?"
        Exit Sub
    End If

Else
    MsgBox "Vul alle verplichte velden in?"
    Exit Sub
End If

MsgBox "bestelling is toegevoegd!"

response = MsgBox("Wilt u nog een nieuwebestelling toevoegen?", vbYesNo, Title:="Gegevens opslaan?")
    If response = vbNo Then
        Me.Hide
        Unload Me
        
    Else
        
        UserForm_Initialize
        
    End If

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = True
End Sub
 
Ferenc,


Mijn idee naar m en vraag 1 is : dat ik na ingave van de eerste gegevens de opzoek en verwijder bladen nog heb aangepast.
' k hem nu opnieuw ingevuld in via Stick gecopieerd op andere PC . lukt nu wel .

Maar heb nog 2 vraagjes : ( dus nr 3 en 4 )

3) indien ik bij referentei een getal invul Vindt ik men later niet meer terug ( kan gegevens niet opvullen ) alleen als ik bij Naam en Referentie " letters " invul. Raar he !!

4 ) Kan de besteldata : ingegeven worden van zodra het programam wordt opgestart en zodanig dat die niet meer gewijzigd kan worden als je later raadpleegt ?
 
Snelle reactie :) Tof dat er iemand meehelpt .

Vraag 4 : uitgetest . Datum komt niet in bestellijst en komt niet in vak van info bestellingen Tenzij ik iets fout deed .
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan