Rij toevoegen bij nieuwe invoer (of verwijderen)

Status
Niet open voor verdere reacties.

Figaro75

Gebruiker
Lid geworden
12 dec 2011
Berichten
91
In het adressen bestand dat ik maak wil ik de gebruiker via userforms gegevens laten toevoegen of eventueel verwijderen.
Maar in dit bestand zitten ook formules in specifieke cellen.
Met name om de naam op verschillende manieren weer te geven of de postcode volgens een vaste opmaak te tonen.

Momenteel heb ik de zoekrange van de comboboxen op een vast bereik staan ("A2:A100").
Ik wil echter liever gebruik maken van de benoemde range ("Contacten").
Op dit moment lopen de formules tot het einde van de range.

Als mensen meer klanten willen toevoegen moet de range eigenlijk automatisch groter worden.
Bij verwijderen mag de range niet te klein worden aangezien er steeds rijen met formules worden weggegooid en ik dus nieuwe 'lege' regels met formules nodig heb.

Nu dacht ik via VBA na het toevoegen van een nieuwe klant (of het verwijderen daarvan) de laatste regel in de range te selecteren ("Leeg"), vervolgens naar de laatste klant in de range te gaan en vervolgens de gekopieerde 'lege' regel in te voegen waardoor 'automatisch' de range ("Contacten") vergroot --> van bij A3:A100 naar A3:A101

Alleen het invoegen van de gekopieerde 'lege' regel op de juiste plek lukt mij niet via VBA.
De regel wordt nu boven de range geplakt.

Waar gaat dit fout?

Code:
    Range("Leeg").Copy
    Range("Contacten").End(xlUp).Offset(1).Select
    Selection.Insert Shift:=xlUp
    Application.CutCopyMode = False

Bekijk bijlage Contacten.xlsm

PS. het gebruik maken van de tabel functie kan niet want dan werken de verschillende macro's niet bij het wijzigen, toevoegen of verwijderen niet.....
 
Zo, weer een uitdaging minder.
Ik begreep dat het ergens in het selecteren van de rij zat waarna ik wilde plakken dus het benoemde bereik maar losgelaten.

Code:
    Range("Leeg").Copy
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
    Selection.Insert Shift:=xlUp
    Application.CutCopyMode = False

Is deze code toevallig nog compacter te krijgen of maakt dat zo niet uit?
 
Je gedefinieerde naam 'contacten' formule:
Code:
=verschuiving(gegevens!a1;1;0;aantalarg(gegevens!a2:a10000);1)

De code om het onder de laatst gevulde cel van kolom A toe te voegen.
Code:
sheets("gegevens").cells(rows.count,1).end(xlup).offset(1).resize(,44) = array(klant, postadres, postcode_01, postcode_02 , plaats_01, plaats_02, adres_03, _ postcode_03, postcode_04, plaats_03, plaats_04, telefoon, faxnr, website, email_01, geslacht, titel, Tav_01, Aanhef_01, Initialen, voornaam, tussenvoegsel, _
achternaam, Naam_01, Naam_02, Naam_03, Naam_04, cp_telefoon, cp_mobiel, cp_email, functie, afdeling, type_klant, klant_van, _
hoe, brief, klantnummer, "", "", "", opmerkingen, d_nieuw, d_wijziging, d_verwijder)
 
Nou, voorlopig heb ik het adressenbestand werkend zoals ik het wil.
Nu maar afwachten of de collega's ook tevreden zijn en of ze nog bugs vinden.

Bedankt Harry
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan