Gegevens in de eerste vrije regel plaatsen

Status
Niet open voor verdere reacties.

ekker1234

Gebruiker
Lid geworden
16 sep 2008
Berichten
19
Hallo Heren,

Ik heb een database maar er zit een "kleine dip in ":confused: als ik een naam verwijder dan verdwijnt de gehele regel en als ik vervolgens een nieuwe naam toevoeg dan wordt deze onderaan de laatste regel geplaatst.Wat is nu het probleem :
in een andere sheet maak ik gebruik van valideren dus selecteer ik een bron deze bron wordt kleiner op het moment van verwijderen van de regel(zie hierboven) en de nieuwe geplaatste regel valt vervolgens buiten de bron! dus buiten de lijst!
ik kan ipv delete => clear doen maar wat vul ik dan in als ik wil dat de nieuwe ingevoerde naam op de plaats komt van de eerste vrije regel ?
Code:
Private Sub verwijderen_Click()
Dim c As Range
Application.ScreenUpdating = False
If roepnaam <> "" Then
    response = MsgBox("Weet u zeker dat u " & roepnaam & " " & zoeknaam & " UIT de database wilt verwijderen?", vbQuestion + vbYesNo, Title:="Gegevens verwijderen!")
        If response = vbNo Then
         MsgBox "Gegevens van " & roepnaam & " " & zoeknaam & " zijn NIET uit de database verwijderd!"
            Me.Hide
             Unload Me
        Else
            For Each c In Worksheets("gegevens").Range("C3:C15")
                If c.Value = zoeknaam.Text Then
                    c.EntireRow.[COLOR="lime"]Delete[/COLOR]
                MsgBox "Gegevens van " & roepnaam & " " & zoeknaam & " zijn UIT de database verwijderd!"
            Me.Hide
            Unload Me
                End If
            Next
        End If
    End If
Application.ScreenUpdating = True
End Sub

Code:
Private Sub opslaan_Click()
Dim MyRange As Variant
Set MyRange = Worksheets("gegevens")
achternaam.SetFocus
legeregel = [COLOR="lime"]MyRange.Range("B" & Rows.Count).End(xlUp).Row + 1[/COLOR]
'wat gaan we opslaan
         voornaam = invoeren1.voornaam.Value
       achternaam = invoeren1.achternaam.Value
    geboortedatum = invoeren1.geboortedatum.Value
            adres = invoeren1.adres.Value
         postcode = invoeren1.postcode.Value
       woonplaats = invoeren1.woonplaats.Value
           mobiel = invoeren1.mobiel.Value
         telefoon = invoeren1.telefoon.Value
  personeelnummer = invoeren1.personeelnummer.Value
        loongroep = invoeren1.loongroep.Value
            sinds = invoeren1.sinds.Value

If voornaam = Empty Or mobiel = Empty Then
    MsgBox "Voer 'minimaal' voornaam en mobiel in!"
    Exit Sub
Else
'waar gaan we het opslaan
    MyRange.Range("B" & legeregel) = voornaam
    MyRange.Range("C" & legeregel) = achternaam
    MyRange.Range("D" & legeregel) = geboortedatum
    MyRange.Range("E" & legeregel) = adres
    MyRange.Range("F" & legeregel) = postcode
    MyRange.Range("G" & legeregel) = woonplaats
    MyRange.Range("H" & legeregel) = mobiel
    MyRange.Range("I" & legeregel) = telefoon
    MyRange.Range("J" & legeregel) = personeelnummer
    MyRange.Range("K" & legeregel) = loongroep
    MyRange.Range("L" & legeregel) = sinds
    
        MsgBox "gegevens van " & voornaam & " " & achternaam & " toegevoegd"
    End If
    MyRange.Range("A" & legeregel, ("L" & legeregel)).Borders.LineStyle = xlContinuous
    
   invoeren1.Hide
   
   response = MsgBox("Wilt u nog meer gegevens toevoegen?", vbYesNo, Title:="Gegevens invoeren")
    If response = vbNo Then
         Exit Sub
        Unload Me
    End If
End Sub
 
Hallo mevrouw

Code:
Private Sub verwijderen_Click()
  Hide
  Application.ScreenUpdating = False
  If roepnaam <> "" Then
    If  MsgBox("Weet u zeker dat u " & roepnaam & " " & zoeknaam & " UIT de database wilt verwijderen?", "Gegevens verwijderen!",vbQuestion + vbYesNo)= vbNo Then
        MsgBox "Gegevens van " & roepnaam & " " & zoeknaam & " zijn NIET uit de database verwijderd!"
    Else
      For Each c In Worksheets("gegevens").Range("C3:C15")
         If c.Value = zoeknaam.Text Then c.EntireRow.Delete
       Next
      MsgBox "Gegevens van " & roepnaam & " " & zoeknaam & " zijn UIT de database verwijderd!"
    End If
  End if
  Application.ScreenUpdating = True
End Sub

Code:
Private Sub opslaan_Click()
  if Me("achternaam").Value="" or Me("Mobiel").value="" then exit sub

  with sheets("gegevens").cells(rows.count,2).end(xlup).offset(1)
    for j=0 to 10
       .offset(,j) = Me(choose(j+1,"voornaam","achternaam","geboortedatum",".....,"sinds")).Value
    next
    .offset(,-1).resize(12).Borders.LineStyle = xlContinuous    
  End With
  response = MsgBox("Wilt u nog meer gegevens toevoegen?", "Gegevens invoeren",vbYesNo )= vbNo Then Unload Me
End Sub

Als je de tekstvakken in de userform namen met een opvolgend nummer geeft (bijv. tekst1, tekst2, tekst3, ...etc.) kan dit eenvoudiger
Code:
  with sheets("gegevens").cells(rows.count,2).end(xlup).offset(1)
    for j=0 to 10
       .offset(,j) = Me("tekst" & j).Value
    next
  end with
En kijk tenslotte ook eens hier
 
Laatst bewerkt:
Bedankt voor je reactie en tijd

Het ziet er inderdaad even wat korter en netter uit:thumb:
even een korte uitleg :de database zit gekoppeld aan een bezettingslijsten (exel sheets)
in de sheets zitten de cellen weer gekoppeld aan keuzelijst dmv valideren (keuze lijst met achternamen om in te delen)


Maar.... waar ik beetje mee 'worstel' is dat ik met valideren een bron (bereik) (sheet database C3 t/m C12) gemaakt deze heb namen genoemd.Tijdens verwijderen dmv userform wordt de komplete regel met de bij behorende naam verwijderd dus de geselecteerde bereik (C3 t/m C12) veranderd mee met als gevolg dat de ingevoerde nieuwe naam buiten bereik valt en niet word weergeven in de lijst op de exel sheets.

Mocht het niet duidelijk zijn (kan ik me voorstellen) dan hoor ik het graag !

groeten Gerard
 
Daarvoor gebruiken we dynamische bereiken:

voor kolom C bijvoorbeeld:
=verschuiving(c1;;;aantalarg(C:C))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan