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

Hulkp bij maken van userform

Status
Niet open voor verdere reacties.

novec

Gebruiker
Lid geworden
6 jan 2009
Berichten
194
Hallo

Ik ben een userform aan het maken m.b.t. tijdsregistratie en inzet van vrijwilligers.

Ik loop tegen een paar vragen aan die mee heel veel tijd kosten om op te lossen en dus begin ik af te haken.

Het zou me helpen als iemand me het zetje kan geven waarna ik ver kan.

Vraag 1
De datum notie in de combobox komt terug in format mm/dd/yyyy in de sheet. Ik had dit opgelost maar dan gaat mijn waarde in de userform terug komen als getal (Bijv. 43330) Das niet de bedoeling. Ik heb ook een oplossing gevonden die alles naar tekst formatteert maar dan werk de selectie in de tabel er niet op…..

Vraag2
De Id Combobox krijgt automatisch de hoogste waarde ui kolom ID +1. Als lijst in de combo had ik graag de waardes welke in de Kolom ID staan waarom? Zie vraag 3
Bovendien verhoogd deze combobos niet nadat ik opgeslagen heb terwijl ik die opdracht wel geef bij ‘After Update’ Wat doe ik niet goed??

Vraag 3
Ik kan opslaan in de tabel.
Maar als ik nu een rij wil wijzigen en daarvoor de ID wil gebruiken? Dus als ik een ID in die combobox kies dan moeten de velden erboven gevuld worden en als ik dan opsla geen nieuwe datarij maken maar de bestaande aanpassen!

Vraag 4
Ik wil graag lege rijen uit de tabel kunnen verwijderen. Ik heb de nodige instructie gevonden maar die werken niet. Waarschijnlijk omdat in de tabel wel formule en functie in de kolommen zitten en ze dan niet als LEEG gezien worden.

Het is veel maar ik ben met alle hulp blij!! :)


Zie de bijlage :

Bekijk bijlage Testje.xlsm


Steven
 
Hier is al vast een begin t/m vraag 3.
Alleen nog verwijzingen naar tabblad 'bron' voor de cbxNaam.

Waarom is het eigenlijk een multipage?
 

Bijlagen

Hallo Harry

Bedankt voor je inzet. Het help echt. Ik kan de Sub routines welke je geschreven hebt begrijpen en uitvoeren. Heerlijk ik kan weer verder.

Het is een Multipage omdat er op page 2 nog informatie gevraagd werd over de werkzaamheden e.d. en op page 3 een overzicht van waarnemingen door de medewerker/vrijwilliger.
Ik heb die pagina's voor deze test er even uitgehaald.

Ergo reuze bedankt.

Het zou mooi zijn als we vraag 4 ook nog opgelost krijgen.

Steven
 
Voor de duidelijkheid zit alles onder de knop opslaan.
Als je de combobox met de nummers wijzigt is het gebruik voor het veranderen, zo niet is het voor het toevoegen van nieuwe gegevens.

Punt 4 lijkt mij overbodig: een goede database bevat nl. geen lege regels.
 
Toch loop ik nu tegen een probleem aan.
Ik heb je code gekpieert nar het origineel sheet en krijg nu de melding
"fout 381 tijdens uitvoering: Kan de eigenschap List niet instellen. Ongeldige index voor eigenschappenmatrix"

Ik denk dat het bij userform initialize routine fout gaat:
Daar staat :
Code:
Private Sub UserForm_Initialize()
       
    cbxNaam.List = Sheets("bron").Cells(1).CurrentRegion.Columns(1).Value
    cbxDatum.List = Evaluate("index(text(row(" & CLng(Date) & ":" & CLng(Date) + 10 & "),""dd-mm-yy""),0)")
    cbxDatum.Value = cbxDatum.List(cbxDatum.ListIndex + 1)
    cbxID.List = Sheets("werkinzet").ListObjects(1).DataBodyRange.Columns(1).Value
    cbxID.Value = Application.Max(Sheets("werkinzet").Columns(2)) + 1
    cbxUur.List = [index(text(row(1:24)-1,"0"),)]
    cbxUur2.List = cbxUur.List
    cbxMinuut.List = [index(text((row(1:12)*5)-5, "00"),)]
    cbxMinuut2.List = cbxMinuut.List
     
        
    End Sub

Enig idee??

Steven
 
Op welke regel krijg je die foutmelding.
Ik vermoed dat er geen gegevens zijn, of maar één regeltje.
Maak handmatig twee regels aan in je database voor de listmethode.
 
Ik heb het op kunnen lossen door alle naam velden waar mijn cbx -en naar verwezen te verwijderen en de cbxnaam naar de eerste rij in het bron blad te verplaatsen.
Het is logisch dat hij niet initialiseert als ik er een verwijzing heb staan .......

Dus opgelost.

Maar ........
Nu krijg ik in mijn opslaan routine een fout melding.

Zie de onderstreepte regel .


With Sheets("Werkinzet").Activate

Code:
    If cbxID.ListIndex > -1 Then
    Set c = .ListObjects(1).DataBodyRange.Columns(1).Find(cbxID.Value, , , xlWhole)
    If Not c Is Nothing Then
        c.Offset(, 1) = cbxNaam
        c.Offset(, 2) = CDate(cbxDatum)
        c.Offset(, 3).Value = cbxUur.Value
        c.Offset(, 4).Value = cbxMinuut.Value
        c.Offset(, 6).Value = cbxUur2.Value
        c.Offset(, 7).Value = cbxMinuut2.Value
        c.Offset(0, 10).Value = cbxGebied.Text
    End If
    Else
    [U]With .ListObjects(1).ListRows.Add[/U]
      With .Range(.ListRows.Count + 1, 1)
      .Value = cbxID.Value
     .Offset(, 1).Value = cbxNaam.Text
     .Offset(, 2).Value = CDate(cbxDatum)
     .Offset(, 3).Value = cbxUur.Value
     .Offset(, 4).Value = cbxMinuut.Value
     .Offset(, 6).Value = cbxUur2.Value
     .Offset(, 7).Value = cbxMinuut2.Value
     .Offset(0, 10).Value = cbxGebied.Text
    End With
 
Is het bereik opgemaakt als tabel?
 
Plaats anders het bestand eens zodat ik niet hoef te gokken.
 
Dat is begrijpelijk maar lastig. Ik wil het gehele bestand niet openbaar hebben. Daarom had ik een test bestandje gemaakt met ook daarin de tabel enz.
 
Normaal gebruik ik geen sheet.activate.
Maar omdat het er in stond dacht ik laat het maar staan.

Ik zie nu dat onderstaande net boven je code buiten de codetags staat.
Code:
[COLOR=#333333]With Sheets("Werkinzet").Activate[/COLOR]

Zoals bovenstaande heb ik het niet geschreven.
Wat ik heb geschreven is:
Code:
[COLOR=#333333]With Sheets("Werkinzet")
 .Activate
'rest van de code
[/COLOR]
En dat is een essentieel verschil.
 
Laatst bewerkt:
Ik heb dat aangepast.
Maar krijg nu een fout melding op de volgend regel.

Code:
With .Range(.ListRows.Count + 1, 1)

in dit blokje:

Code:
Else
    With .ListObjects(1).ListRows.Add
      With .Range(.ListRows.Count + 1, 1)
      .Value = cbxID.Value
     .Offset(, 1).Value = cbxNaam.Text
     .Offset(, 2).Value = CDate(cbxDatum)
     .Offset(, 3).Value = cbxUur.Value
     .Offset(, 4).Value = cbxMinuut.Value
     .Offset(, 6).Value = cbxUur2.Value
     .Offset(, 7).Value = cbxMinuut2.Value
     .Offset(0, 10).Value = cbxGebied.Text
    End With
 
Het is altijd een beetje raar als iemand een bestand plaatst en je maakt er een code voor, dat het dan niet voor dat bestand bestemd is.
Zoek eens goed naar de verschillen in beide bestanden als je het echte bestand niet kunt plaatsen (wat ik overigens ook maar onzin vind; gooi alle informatie eruit en verander het in fictieve gegevens).
 
Hi harry

Je hebt gelijk. Ik zal vanavond/morgenvroeg de sheet leeghalen en aanbieden. Ik ben blij met je hulp.

m.vr.gr.

Steven
 
Hallo

Hierbij de complete sheet met wat uitleg.

1 Bronblad
In dit bron blad zitten een paar naam bereiken waar comboboxen naar verwijzen. Deze velden heb ik grijs gemaakt
2. Start
Alleen maar het openen van het formulier
3. Werkinzet
Zoals eerder in deze conversatie aangegeven.
Bij tekstvak Inzet moet gebruiker meerdere keuzes kunnen aanklikken die code zit al n de opslaan routine
4. Wat
Zou mooi zijn als datum en naam hier terugkomen
5. Waarneming en Feiten idem

Elk tabblad in formulier verwijst naar een tabel in de sheet.
Daar waar een berekende kolom in een tabel zit heb ik dat aangegeven.

Ik hoop dat je me kunt verder helpen.

Ik ben VBA aan het leren en dan is deze sheet een hele kluif. Toch begrijp de meest code wel en als ik dan oplossingen aangereikt krijg kan ik er vaak ook wat mee. Toch kom ik op detail niveau nog te kort. Maar dat is een kwestie van tijd.

Dank dus voor alle hulp!! Wordt echt gewaardeerd.

StevenBekijk bijlage Test2.xlsm
 
Hier is eerst een begin.
 

Bijlagen

Hi Harryy

Ik ben met de sheet bezig geweest en zie de vooruitgang. Ben er blij mee?

Dank zover.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan