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

Useform nieuw record in Tabel of juist een rij in Tabel wijzigen

Status
Niet open voor verdere reacties.

novec

Gebruiker
Lid geworden
6 jan 2009
Berichten
194
Hallo

Ik ben mijn kennis van VBA aan het vergroten en loop in meerdere formulieren tegen een paar probleempjes op. Wie wil me helpen bij het volgende?
Ik heb een sheetje toegevoegd als voorbeeld.

Ik werk vaak met Tabellen waar OF een nieuwe regel toegevoegd moet worden OF een regel gewijzigd moet worden.

In dit voorbeeld heb ik ervoor gekozen omdat via en Multipage te doen.
Page 1 om een nieuw record toe te voegen en Page 2 om te wijzigen.

Ik heb volgend vragen:
Bij Nieuw:
- TxTID wil ik automatisch vullen met de eerst volgende waarde. Dus =MAX(Tabel1[ID.NR.])+1
Waarde staat overigens in Cel H2
Dit veld vult hij nu wel automatisch maar dan moet ik eerst naar page 2 en dan naar page 1 ……?? Das raar. Ik heb geprobeerd met before update en after update en userform initialize maar hij ‘pakt’ het niet
Bij wijzigen:
- Hier heb ik bij ID ophalen een application gebruikt die me een foutmelding oplevert. Ik begrijp niet waarom? Wie legt me dit uit en heeft een oplossing?
- Als daarna alle velden gevuld zijn moet de waarde niet als nieuw record naar de tabel maar de bestaande records aanpassen. Ik vindt via Youtube meerdere routines hiervoor maar geen van die oplossing doet wat ik wil. Zo vond ik een oplossing die eerst de hele rij schoonmaakt “Clear”, maar dan is ook de formule in kolom f bijvoorbeeld weg en die moet juist blijven


Dank alvast voor alle hulp. VBA is zo geweldig en via dit forum kom ik steeds verder TOP!

Steven

Bekijk bijlage TestjeFormulier met wijzigen.xlsm
 
Laatst bewerkt:
Dag novec,

Misschien kan je hier wat mee:

Code:
Private Sub UserForm_Initialize()
MultiPage1.Pages("mpNieuw").txtID.Text = Worksheets("Test").Range("h2").Value
End Sub

Code:
Private Sub cmbFindID_Click()
      
    Dim oRange As Range
    Set oRange = ThisWorkbook.Sheets("Test").Columns(1).Find _
                (What:=txtID2.Value, LookIn:=xlValues, LookAt:=xlWhole)
    
    If oRange Is Nothing Then
        MsgBox "ID nummer bestaat niet"
        txtID2.Value = ""
        Exit Sub
    End If
    
    txtNaam2.Text = oRange.Offset(0, 1).Value
    txtArt2.Text = oRange.Offset(0, 2).Value
    txtPrijs2.Value = oRange.Offset(0, 3).Value
    txtAantal2.Value = oRange.Offset(0, 4).Value

End Sub

Code:
Private Sub cmbWijzigen_Click()

    Dim oRange As Range
    Set oRange = ThisWorkbook.Sheets("Test").Columns(1).Find _
                (What:=txtID2.Value, LookIn:=xlValues, LookAt:=xlWhole)
    
    oRange.Offset(0, 1).Value = txtNaam2.Text
    oRange.Offset(0, 2).Value = txtArt2.Text
    oRange.Offset(0, 3).Value = txtPrijs2.Value
    oRange.Offset(0, 4).Value = txtAantal2.Value

    txtNaam2.Text = ""
    txtArt2.Text = ""
    txtPrijs2.Value = ""
    txtAantal2.Value = ""
    txtID2.Value = ""
    
End Sub


Grtz,
MDN111
 
Laatst bewerkt:
Hi MDN111

Net thuis en snel even getest. Dit werkt!! :-)
Ik Zal er verder naar kijken, maar voor nu : .... BEDANKT!

Steven
 
Laatst bewerkt:
Hi MDN111

Ik heb verder getest en alles functioneert. Ik kan het bovendien goed op ander formulieren toepassen. Ik ben dus happy!

Tnx !!
 
Toch nog een vraagje.

Ik heb de code in een groter formulier gebruik waar ook een option/radio button in zit. Dus keuze Ja of Nee en rondje aanvinken wat juist is.
ik heb deze code gebruikt welke in de "Private Sub cmbClick_Click()"zit, waarmee ik data uit de sheet naar multipage1 > mpWijzigen haal

txtOverrigeAan2.Value = oRange.Offset(0, 13).Value

If opbJa = True Then
opbJa.Value = oRange.Offset(0, 14).Value
Else
opbNee.Value = oRange.Offset(0, 14).Value
End If

txtVern2.Value = oRange.Offset(0, 15).Value

Ik krijg geen foutmelding maar er is ook niet één van de keuze vakjes gevuld.
Weet je wat ik niet goed doe?


Steven
 
Sorry, novec, maar op die manier is je vraag niet te beantwoorden.
Uit die paar regels code kan ik niet afleiden wat je bedoeling is.
Is het mogelijk het bestand met het groter formulier te posten? Desnoods met dummy gegevens?

Grtz,
MDN111.
 
Je hebt natuurlijk gelijk.
Ik heb het Test bestandje even uitgebreid met een ja nee radio button. Die werkt prima als ik een nieuwe rij maak.
vraag: Hoe krijg ik die waarde terug in het formulier waar ik wijzig? Ik heb daar nu geen code staan overigens!

Ik zie tevens dat de valuta waarde en aantal als tekst terug komen naar de sheet. Dat moet ik even opzoeken hoe ik dat oplos.

Dank
 

Bijlagen

Het 2e deel om de zaken in correct celwaarde in de sheet te krijgen is opgelost met CCur en Cint. Dat is dus klaar.!
 
In bijlage het bestand terug met daarin de gewijzigde code.
Op het eerste zicht lijkt het wel te werken.
Het grondig testen laat ik aan jou :d

Opmerking: Er is geen controle op de invoer van de gegevens in het formulier. Dat zou eventueel nare gevolgen kunnen hebben, bijvoorbeeld als de gebruiker letters invult in het vakje voor de prijs of in het vakje voor het aantal geeft dat een foutmelding "Type mismatch", enz...

Grtz,
MDN111
 

Bijlagen

Afgelopen zondag en vanmiddag ben ik ermee aan het stoeien gegaan. Alles werkt perfect. Ik ben er geweldig blij mee.
Ik kan het in meerdere sheets toepassen en je hebt e.e.a. zeer overzichtelijk en leesbaar gemaakt.

Dus nogmaals TOPPIE!!!

Steven
 
In bijlage het bestand terug met daarin de gewijzigde code.
Op het eerste zicht lijkt het wel te werken.
Het grondig testen laat ik aan jou :d

Opmerking: Er is geen controle op de invoer van de gegevens in het formulier. Dat zou eventueel nare gevolgen kunnen hebben, bijvoorbeeld als de gebruiker letters invult in het vakje voor de prijs of in het vakje voor het aantal geeft dat een foutmelding "Type mismatch", enz...

Grtz,
MDN111

Hallo MDN111,

Ik wil je ook even bedanken voor dit mooi stukje programmeer werk. Met duidelijke uitleg erin. Deze testformulier kan ik ook goed gebruiken.

Groet Lambert (pd1lg)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan