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

Nieuwe textbox werkt niet

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
528
Hallo iedereen,

Ik heb een formulier aangemaakt met 5 textboxen die de gegevens dan invullen in kolom 1 tem 5 op de door mij geselecteerd rij, geleerd op een online cursus en werkt perfect.
Oorspronkelijke code is die zonder de tekst in Bold.
Later heb ik dan een extra textbox bijgevoegd in mijn formulier en de codes aangepast (is de text in Bold)
Bij de volgende code :
Code:
ws.Cells(iRow, 6).Value = Me.txtStartContract.Value
neem ik aan dat hij die gegevens in de 6e kolom zou plaatsen,
Net zoals deze 5 andere lijnen de gegevens in kolom 1 t.e.m; 5 plaatsten :

Code:
ws.Cells(iRow, 1).Value = Me.txtNaam.Value
ws.Cells(iRow, 2).Value = Me.txtVoornaam.Value
ws.Cells(iRow, 3).Value = Me.txtStatus.Value
ws.Cells(iRow, 4).Value = Me.txtSpecialisatie.Value
ws.Cells(iRow, 5).Value = Me.txtEenheid.Value
Maar dat doet hij niet. De eerste 5 velden verschijnen wel in de respectievelijke cellen maar de gegevens van het 6e veld niet.

Wat doe ik fout?

Hier is de code :

Code:
Private Sub cmdToevoegen_Click()

If ActiveWorkbook.MultiUserEditing Then
Application.DisplayAlerts = False
ActiveWorkbook.ExclusiveAccess
Application.DisplayAlerts = True
End If

ActiveSheet.Unprotect "ynnewg1994"

Cells.Find(What:="Start voor nieuwe rij", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Application.ScreenUpdating = False
Dim cell As Range
Selection.EntireRow.Insert
For Each cell In Intersect(ActiveSheet.UsedRange, Selection.Offset(-1, 0).EntireRow)
If cell.HasFormula Then
cell.Copy cell.Offset(1, 0)
End If

Next

Application.ScreenUpdating = True
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Apothekers")

'zoekt de laatst gebruikte cel, gaat naar de bovenliggende rij
iRow = ws.Cells(Rows.Count, 1) _
.End(xlUp).Offset(-1, 0).Row

'Controleerd of er een Naam is ingevuld
If Trim(Me.txtNaam.Value) = "" Then
Me.txtNaam.SetFocus
MsgBox "Gelieve een NAAM in te voegen"
Exit Sub
End If

'Controleerd of er een Voornaam is ingevuld
If Trim(Me.txtVoornaam.Value) = "" Then
Me.txtVoornaam.SetFocus
MsgBox "Gelieve een VOORNAAM in te voegen"
Exit Sub
End If

'Controleerd of er een Status is ingevuld
If Trim(Me.txtStatus.Value) = "" Then
Me.txtStatus.SetFocus
MsgBox "Gelieve een STATUS in te vullen"
Exit Sub
End If

'Controleerd of er een Specialisatie is ingevuld
If Trim(Me.txtSpecialisatie.Value) = "" Then
Me.txtSpecialisatie.SetFocus
MsgBox "Gelieve een SPECIALISATIE in te vullen"
Exit Sub
End If

'Controleerd of er een Eenheid is ingevuld
If Trim(Me.txtEenheid.Value) = "" Then
Me.txtEenheid.SetFocus
MsgBox "Gelieve een EENHEID in te vullen"
Exit Sub
End If

[B]'Controleerd of er een Startdatum is ingevuld
If Trim(Me.txtStartContract.Value) = "" Then
Me.txtStartContract.SetFocus
MsgBox "Gelieve een DATUM in te vullen"
Exit Sub
End If[/B]


'Plaatst de gegevens in de lege rij
ws.Cells(iRow, 1).Value = Me.txtNaam.Value
ws.Cells(iRow, 2).Value = Me.txtVoornaam.Value
ws.Cells(iRow, 3).Value = Me.txtStatus.Value
ws.Cells(iRow, 4).Value = Me.txtSpecialisatie.Value
ws.Cells(iRow, 5).Value = Me.txtEenheid.Value
[B]ws.Cells(iRow, 6).Value = Me.txtStartContract.Value[/B]


'Verwijderd gegevens van de Form en gaat terug naar NAAM
Me.txtNaam.Value = ""
Me.txtVoornaam.Value = ""
Me.txtStatus.Value = ""
Me.txtSpecialisatie.Value = ""
Me.txtEenheid.Value = ""
[B]Me.txtStartContract.Value = ""[/B]
Me.txtNaam.SetFocus
ActiveWorkbook.Save


End Sub

Private Sub cmdSluiten_Click()
Unload Me

ActiveSheet.Protect "ynnewg1994"

ActiveWorkbook.Save

If Not ActiveWorkbook.MultiUserEditing Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ActiveWorkbook.Name, accessmode:=xlShared
Application.DisplayAlerts = True
ActiveWorkbook.Save
End If
End Sub

Private Sub txtEenheid_Change()

End Sub

Private Sub txtNaam_Change()

End Sub

Private Sub txtSpecialisatie_Change()

End Sub

Private Sub txtStartContract_Change()

End Sub

Private Sub txtStatus_Change()

End Sub

Private Sub txtVoornaam_Change()

End Sub

Private Sub UserForm_Click()

End Sub


Heeeelp,

Bedankt

Pascal
 
Laatst bewerkt:
Doe eens dit:
Code:
'Plaatst de gegevens in de lege rij
ws.Cells(iRow, 1).Value = Me.txtNaam.Value
ws.Cells(iRow, 2).Value = Me.txtVoornaam.Value
ws.Cells(iRow, 3).Value = Me.txtStatus.Value
ws.Cells(iRow, 4).Value = Me.txtSpecialisatie.Value
ws.Cells(iRow, 5).Value = Me.txtEenheid.Value
Msgbox "[" & Me.txtStartContract.Value & "]"

Wat staat er dan in die messagebox op je scherm tussen de [] tekens? Laat hier dus even precies zien welke string er tussen de [] tekens staat.


Tip:
Omdat je kennelijk met een cursus bezig bent. Leer ook je code netjes op te maken. Dat scheelt een heel stuk in de leesbaarheid. Met de code zoals je die hier boven had geplaatst heb ik dat voor je gedaan zodat je het verschil kunt zien:
Code:
Private Sub cmdToevoegen_Click()
    Dim cell As Range
    Dim iRow As Long
    Dim ws As Worksheet
    
    If ActiveWorkbook.MultiUserEditing Then
        Application.DisplayAlerts = False
        ActiveWorkbook.ExclusiveAccess
        Application.DisplayAlerts = True
    End If

    ActiveSheet.Unprotect "ynnewg1994"

    Cells.Find(What:="Start voor nieuwe rij", After:=ActiveCell, LookIn:= _
    xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
    xlNext, MatchCase:=False, SearchFormat:=False).Activate

    Application.ScreenUpdating = False
    Selection.EntireRow.Insert
    For Each cell In Intersect(ActiveSheet.UsedRange, Selection.Offset(-1, 0).EntireRow)
        If cell.HasFormula Then cell.Copy cell.Offset(1, 0)
    Next
    Application.ScreenUpdating = True

    Set ws = Worksheets("Apothekers")
    'zoekt de laatst gebruikte cel, gaat naar de bovenliggende rij
    iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(-1, 0).Row
    
    'Controleerd of er een Naam is ingevuld
    If Trim(Me.txtNaam.Value) = "" Then
        Me.txtNaam.SetFocus
        MsgBox "Gelieve een NAAM in te voegen"
        Exit Sub
    End If

    'Controleerd of er een Voornaam is ingevuld
    If Trim(Me.txtVoornaam.Value) = "" Then
        Me.txtVoornaam.SetFocus
        MsgBox "Gelieve een VOORNAAM in te voegen"
        Exit Sub
    End If

    'Controleerd of er een Status is ingevuld
    If Trim(Me.txtStatus.Value) = "" Then
        Me.txtStatus.SetFocus
        MsgBox "Gelieve een STATUS in te vullen"
        Exit Sub
    End If

    'Controleerd of er een Specialisatie is ingevuld
    If Trim(Me.txtSpecialisatie.Value) = "" Then
        Me.txtSpecialisatie.SetFocus
        MsgBox "Gelieve een SPECIALISATIE in te vullen"
        Exit Sub
    End If

    'Controleerd of er een Eenheid is ingevuld
    If Trim(Me.txtEenheid.Value) = "" Then
        Me.txtEenheid.SetFocus
        MsgBox "Gelieve een EENHEID in te vullen"
        Exit Sub
    End If

    'Controleerd of er een Startdatum is ingevuld
    If Trim(Me.txtStartContract.Value) = "" Then
        Me.txtStartContract.SetFocus
        MsgBox "Gelieve een DATUM in te vullen"
        Exit Sub
    End If

    'Plaatst de gegevens in de lege rij
    ws.Cells(iRow, 1).Value = Me.txtNaam.Value
    ws.Cells(iRow, 2).Value = Me.txtVoornaam.Value
    ws.Cells(iRow, 3).Value = Me.txtStatus.Value
    ws.Cells(iRow, 4).Value = Me.txtSpecialisatie.Value
    ws.Cells(iRow, 5).Value = Me.txtEenheid.Value
    ws.Cells(iRow, 6).Value = Me.txtStartContract.Value

    'Verwijderd gegevens van de Form en gaat terug naar NAAM
    Me.txtNaam.Value = ""
    Me.txtVoornaam.Value = ""
    Me.txtStatus.Value = ""
    Me.txtSpecialisatie.Value = ""
    Me.txtEenheid.Value = ""
    Me.txtStartContract.Value = ""
    
    Me.txtNaam.SetFocus
    ActiveWorkbook.Save

End Sub

Private Sub cmdSluiten_Click()
    Unload Me
    
    ActiveSheet.Protect "ynnewg1994"
    ActiveWorkbook.Save
    
    If Not ActiveWorkbook.MultiUserEditing Then
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs ActiveWorkbook.Name, accessmode:=xlShared
        Application.DisplayAlerts = True
        ActiveWorkbook.Save
    End If
End Sub
 
Laatst bewerkt:
Edmoor,

Ik heb het mysterie opgelost, dommerik dat ik ben. :rolleyes:

Het gegeven zal wel telkens in de zesde kolom ingevuld zijn, ware het niet dat de zesde t.e.m. de negende kolom verborgen zijn omdat ze niet zichtbaar moeten zijn voor de gebruikers.

dus heb ik de "6" in mijn code vervangen door "10" en op die manier komt het gegeven uit mijn 6e veld van mijn formulier wel in de juiste cel. :confused::confused::confused:

Toch nog een vraagje :

Je kan in mijn code zien dat de workbook in het begin "unshared" wordt en dat de sheet "unprotect" wordt alvorens de vba code kan uitgevoerd worden.
Nadat de "Form" zijn werk heeft gedaan wordt de sheet terug "protect" en "shared". Regelmatig laat ik ook de workbook saven zoals je in de code zal zien.

Excel doet dat ook allemaal. Ik moet dit doen anders werken de macro's niet. en op die manier wel.

Als ik excel afsluit en de workbook terug opnieuw open dan is de workbook niet meer in "shared" modus.

De protect is niet veranderd maar de shared is niet meer aangevinkt desondank ik de workbook save.

Kan je er wat aan uit aan mijn uitleg? :confused:

Is dit op te lossen?

Greetz

Pascal
 
Ik heb geen enkele ervaring met gedeelde documenten. Wellicht dat iemand anders daar een antwoord op kan geven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan