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

hulp bij VBA formulier om database te vullen

Status
Niet open voor verdere reacties.

franssack

Gebruiker
Lid geworden
1 jun 2021
Berichten
58
Ten eerste mijn complimenten voor dit platform, kijk als een tijdje rond en heb ook een paar vragen gesteld n.a.v. problemen die ik had met wat excel bestanden.
Ik ben geen programmeur en snap totaal niets van alle commando's die in een VBA staan, maar door een beetje logisch puzzelen en de verbanden te zien in de code kom ik soms redelijk ver.

Nu heb ik bijgevoegd bestand op jullie platform gevonden waar ik een beetje verder ben op geen bouwen, ik heb wat invulmogelijkheden toegevoegd incl. de labels, alleen krijg ik deze in in mijn blad.
Kan iemand mij op weg helpen? kolom B tm M worden gevuld volgens bestaande VBA, aanvullen tm AV krijg ik niet voor elkaar.
Ik heb in deze kolommen aangegeven om welk invoer veld het gaat en welke klom ik vrij wil hebben.
 

Bijlagen

  • frans1.xlsm
    82,3 KB · Weergaven: 28
Wat denk je dat .Resize(,12) doet/betekent.
Code:
.Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(, [B]12[/B])
 
Thnx 12 verwijst naar aantal kolommen, deze nu aangepast, zie onder, maar nog krijg ik een volgende fout melding.

Code:
Private Sub C_1_Click()
    For i = 1 To 12
        If Me("T_" & Format(i, "00")).Value = "" Then
           MsgBox "Niet volledig ingevuld!", vbInformation, "Niet compleet"
           Me("T_" & Format(i, "00")).SetFocus
        Exit Sub
        End If
    Next
    
    With Blad1
        .Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(, 47).Value = Array(T_01, T_02, T_03, T_04, T_05, CDate(T_06), Format(T_07), T_08, T_09, T_10, T_11, T_12, T_13, T_14, T_15a, T_16, T_17, T_18, T_19, T_21, T_22, T_23, T_25, T_27, T_29, T_31, T_33, T_35, T_37, T_39, T_41, T_42, T_44, T_46)
        .Cells(1, 2).CurrentRegion.Sort key1:=.Cells(1, 2), key2:=.Cells(1, 6), Header:=xlYes
    End With
    MsgBox "Cursist toegevoegd", vbInformation, "Klaar"
      
    For Each ctrl In Controls
        If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then ctrl.Value = ""
    Next
    
    Call UserForm_Initialize
End Sub

Private Sub C_2_Click()
    If L_1.ListIndex = -1 Then
        MsgBox "Kies eerst een ingave in de lijst!", vbCritical, "Ingave?"
        L_1.SetFocus
    Exit Sub
    End If
    If MsgBox("Correcte aanpassing?", vbYesNo + vbQuestion, "Kijk de gegevens na!") = vbNo Then Exit Sub
    
    With Blad1
        .Columns(8).Find(T_07, , , 1).Offset(, -6).Resize(, 47).Value = Array(T_01, T_02, T_03, T_04, T_05, CDate(T_06), Format(T_07), T_08, T_09, T_10, T_11, T_12, T_13, T_14, T_15a, T_16, T_17, T_18, T_19, T_21, T_22, T_23, T_25, T_27, T_29, T_31, T_33, T_35, T_37, T_39, T_41, T_42, T_44, T_46)
        .Cells(1, 2).CurrentRegion.Sort key1:=.Cells(1, 2), key2:=.Cells(1, 6), Header:=xlYes
    End With
    MsgBox "De aanpassingen zijn opgeslagen!", vbInformation, "Klaar"
    
        L_1.ListIndex = -1
    For Each ctrl In Controls
        If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then ctrl.Value = ""
    Next ctrl
    
    Call UserForm_Initialize
End Sub
 
Laatst bewerkt door een moderator:
Gebruik codetags bij het plaatsen van code.
En als je zegt een foutmelding te krijgen vertel er dan ook bij welke dat is.
 
Wat zijn codetags?

Foutmelding in de module
 

Bijlagen

  • frans3.xlsm
    89,6 KB · Weergaven: 18
Laatst bewerkt:
Klik eens op de link in mijn handtekening.
En de foutmelding?
 
En ik vraag dus WAT de foutmelding is.
Je verteld er ook niet bij wat we moeten doem om de foutmelding te reproduceren.
Plaats die melding gewoon hier.
 
excuses,

Als ik de VBA uitvoer, krijg ik de melding dat hij het opgegeven object niet kan vinden.
Knipsel.PNG

Voor ik een controle uit dan kom ik module1 waarbij Scherm.Show geel gearceerd staat.
Meer kan ik er niet van maken... ik heb code
Code:
.Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(, 12)
aangepast naar 47 want zoveel kolommen heb ik en dan schiet hij dus uit de bocht.

Ik heb het vermoeden dat
Code:
Private Sub C_1_Click()
    For i = 1 To 12
        If Me("T_" & Format(i, "00")).Value = "" Then
           MsgBox "Niet volledig ingevuld!", vbInformation, "Niet compleet"
           Me("T_" & Format(i, "00")).SetFocus
        Exit Sub
        End If
    Next
hier invloed op heeft.
 
Nee.
Dat komt omdat in het formulier de labelnamen niet opeenvolgend zijn.
Daarnaast heeft het object Lbl15 een verkeerde naam, deze heet nu Lbl15a.
 
Dus ff resumé als als ik deze doorzet van LBL1 m zegge 48, dan zou het probleem zich op moeten lossen??
 
Inderdaad.
In ieder geval dat probleem.
 
Laatst bewerkt:
Maakt het dan nog uit als ik er 1 over slag, dus van lbl5 naar 7 ga?, of moet het echt 5,6,7 zijn?
Ik vraag dit omdat ik tussen lbl5 en 7 een vrije kolom wil hebben.
 
Dat maakt voor dat probleem niet uit, maar dan vraag ik me wel af of je de captions op de juiste labels krijgt.
 
Ik ga het vanavond nog ff proberen, kom wel weer in de lucht als ik zo ver ben.
Bedankt voor je input.
 
Geprobeerd....... alles netje in oplopende volgorde gezet, maar nog steeds het zelfde issue.
Code:
Private Sub C_1_Click()
    For i = 1 To 12
        If Me("T_" & Format(i, "00")).Value = "" Then
           MsgBox "Niet volledig ingevuld!", vbInformation, "Niet compleet"
           Me("T_" & Format(i, "00")).SetFocus
        Exit Sub
        End If
    Next
    
    With Blad1
        .Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(, 47).Value = Array(T_01, T_02, T_03, T_04, T_05, CDate(T_06), Format(T_07), T_08, T_09, T_10, T_11, T_12, T_13, T_16, T_17, T_18, T_19, T_20, T_22, T_23, T_24, T_26, T_28, T_30, T_32, T_34, T_36, T_38, T_40, T_42, T_43, T_45, T_47)
        .Cells(1, 2).CurrentRegion.Sort key1:=.Cells(1, 2), key2:=.Cells(1, 6), Header:=xlYes
    End With
    MsgBox "Cursist toegevoegd", vbInformation, "Klaar"
      
    For Each ctrl In Controls
        If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then ctrl.Value = ""
    Next
    
    Call UserForm_Initialize
End Sub

1e deel aangepast

en tweede deel zie onder;
Code:
Private Sub C_2_Click()
    If L_1.ListIndex = -1 Then
        MsgBox "Kies eerst een ingave in de lijst!", vbCritical, "Ingave?"
        L_1.SetFocus
    Exit Sub
    End If
    If MsgBox("Correcte aanpassing?", vbYesNo + vbQuestion, "Kijk de gegevens na!") = vbNo Then Exit Sub
    
    With Blad1
        .Columns(8).Find(T_07, , , 1).Offset(, -6).Resize(, 47).Value = Array(T_01, T_02, T_03, T_04, T_05, CDate(T_06), Format(T_07), T_08, T_09, T_10, T_11, T_12, T_13, T_16, T_17, T_18, T_19, T_20, T_22, T_23, T_24, T_26, T_28, T_30, T_32, T_34, T_36, T_38, T_40, T_42, T_43, T_45, T_47)
        .Cells(1, 2).CurrentRegion.Sort key1:=.Cells(1, 2), key2:=.Cells(1, 6), Header:=xlYes
    End With
    MsgBox "De aanpassingen zijn opgeslagen!", vbInformation, "Klaar"
    
        L_1.ListIndex = -1
    For Each ctrl In Controls
        If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then ctrl.Value = ""
    Next ctrl
    
    Call UserForm_Initialize
End Sub

Bij deze code geeft hij de foutmelding op scherm.Show
Code:
Sub Knop_scherm()
    Scherm.Show
End Sub

bijgaand even de laatste versie erbij gedaan.
 

Bijlagen

  • frans4.xlsm
    87,7 KB · Weergaven: 14
Dat komt omdat ze in het userform nog steeds niet opeenvolgend zijn.
Lbl14 is er bijvoorbeeld niet en daar gaat 'ie nu op stuk.
 
5 opmerkingen:

- verwijder in beide werkbladen de eerste lege kolom
- gebruik in beide werkbladen een dynamische tabel
- gebruik dan in 'Initialize'
Code:
Private Sub UserForm_Initialize()
    With Blad1
        L_1.List = .ListObjects(1).DataBodyRange.Value
        sn = .ListObjects(1).HeaderRowRange.Value
    End With
- gebruik geen comboboxen voor de keuze 'ja/nee' , maar een vinkvak (leeg = nee, afgevinkt = ja)
- hou de code simpel

ipv
Code:
    T_08.List = Array("Aannemer1", "Aannemer2")
    T_17.List = Array("Aanemer1", "Aannemer2")
gebruik
Code:
    T_08.List = Array("Aannemer1", "Aannemer2")
    T_17.List = T_08.List
 
Hallo, Dit wordt een leuke puzzel voor mij.
Ik ga ff kijken of ik hier uit kan komen, gaf al aan dat ik geen verstand van codes heb en vaak kijk naar de verbanden die in een VBA zitten, verbazingwekkend kom ik dan een redelijk end.
Neemt niet weg dat dit een mooie uitdaging wordt, doe even de laatste stand van gisterenavond n.a.v. alle labels, en ja... het ziet er even niet uit, maar geen vast lopers.
 

Bijlagen

  • frans5.xlsm
    93,2 KB · Weergaven: 16
je maakt het uzelf wel moeilijk omdat sommige kolommen niet ingevuld of veranderd mogen worden.
 

Bijlagen

  • frans3 (1).xlsm
    103,4 KB · Weergaven: 14
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan