Toon posts:

[excel] hulp met een macro gevraagd

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen,

Ik wil mijn database in excel anders benaderen (lees records invoeren) dan met het bekende "formulier"

Zodra ik mijn gegevens in bepaalde cellen heb ingevoerd wil ik ze laten "knippen-plakken" in mijn database (is eigenlijk gewoon een lijst met alle gegevens) met een macro.

macro=

Range("K25").Select
Selection.Cut
Range("K38").Select
ActiveSheet.Paste

Maar nu moet deze macro er nog voor zorgen dat hij de gegevens op de juiste plaats (=rij) plakt zodat er geen gegevens worden overschreven.

Mijn vraag: kan dit met een macro, en zo ja: hoe gaat dit in zijn werk?

Alvast bedankt voor jullie hulp!

  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

Verwijderd schreef op 02 december 2003 @ 09:29:
Ik wil mijn database in excel anders benaderen (lees records invoeren)
Excel is geen databaseapplicatie, maar een spreadsheet. |:( Er zijn dus ook geen records, maar cellen.
Maar nu moet deze macro er nog voor zorgen dat hij de gegevens op de juiste plaats (=rij) plakt zodat er geen gegevens worden overschreven.
En welke rij is dan de juiste? Wat je wil, kan vast, maar dan moet je wel wat meer info geven.
offtopic:
En misschien moet je Forumgedrag nog maar eens lezen. :)

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


Verwijderd

Topicstarter
ik heb je een emailtje gestuurd met een afbeelding van het probleem...alvast bedankt!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op 02 december 2003 @ 12:06:
ik heb je een emailtje gestuurd met een afbeelding van het probleem...alvast bedankt!
Probeer nou eens na te denken over je probleem-stelling en leg dit nog eenmaal uit. Dit forum is geen persoonlijke helpdesk!

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Oke: ik zal het zo proberen:

De gegevens die bij de invoervelden staan moeten dus via bv. een macro in de lijst eronder komen te staan, enwel op de eerst volgende lege rij zodat de macro geen
andere gegevens overschrijft

C D
invoervelden
naam KingRichard
adres Groningen


lijst
naam adres
17 Jeroen Zoetermeer
18

Ik hoop dat het zo een beetje goed overkomt....

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Dus je probleem is nu dat je niet weet hoe je onderaan je lijst terecht komt?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
ja ik geloof dat je mijn probleem begrijpt...heb je er ook een oplossing voor?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Zoals gezegd: dit is een forum en geen helpdesk. Ongevraagd e-mails sturen is ook niet echt aardig; niet tegenover KR (behalve als je hem gaat betalen voor z'n werk :+ ) en niet tegenover jezelf omdat niemand anders dan kan meedenken :)
Een plaatje kan je ook hier posten: zie de RML codes in de algemene FAQ voor hoe. Maar als tekst is vaak mooier & ook makkelijker.

Klinkt misschien rit maar het lijkt me trouwens verstandig om eens een goed boek over VBA binnen Excel te lezen, zodat de basics goed worden begrepen. Met opnemen & afspelen (wat je nu doet) kom je ook al erg ver als je de hele F1 en bijbehorende voorbeelden doorleest, maar een goed boek werkt toch makkelijker :)

Maar goed, wat eenvoudige oplossingen: het makkelijkst is ergens in een cel het aantal bij te houden, zodat je heel makkelijk bijvoorbeeld aantal*4 kunt nemen als beginrij. Nog minder mooi maar natuurlijk kan je een FOR loopje gebruiken om te zien waar geen gegevens meer in cellen staan (ISEMPTY), zodat je daarna wat kan wegschrijven :)

[ Voor 7% gewijzigd door F_J_K op 02-12-2003 13:57 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

F_J_K schreef op 02 december 2003 @ 13:56:
Maar goed, wat eenvoudige oplossingen: het makkelijkst is ergens in een cel het aantal bij te houden, zodat je heel makkelijk bijvoorbeeld aantal*4 kunt nemen als beginrij. Nog minder mooi maar natuurlijk kan je een FOR loopje gebruiken om te zien waar geen gegevens meer in cellen staan (ISEMPTY), zodat je daarna wat kan wegschrijven :)
Het kan zelf nog eenvoudiger ;)

code:
1
2
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

BtM909 schreef op 02 december 2003 @ 14:01:
Het kan zelf nog eenvoudiger ;)
Verrek, helemaal vergeten dat die bestaat :D :X

Kommah, kommah: prutser ik.


Trouwens moet je met selection oppassen dat er niet ergens een bereik is geselecteerd.
code:
1
Columns(1).End(xlDown).Offset(1, 0).Select

Is dan ook mooier. Natuurlijk die colom 1 (dus A) aanpassen naar wens en gaat het fout als er 0 cellen zijn ingevuld in kolom A :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

F_J_K schreef op 02 december 2003 @ 14:24:
[...]

Verrek, helemaal vergeten dat die bestaat :D :X

Kommah, kommah: prutser ik.


Trouwens moet je met selection oppassen dat er niet ergens een bereik is geselecteerd.
code:
1
Columns(1).End(xlDown).Offset(1, 0).Select

Is dan ook mooier. Natuurlijk die colom 1 (dus A) aanpassen naar wens en gaat het fout als er 0 cellen zijn ingevuld in kolom A :)
1. PRUTSER!!!!111

2. Ik selecteer altijd apart mijn range voordat ik bovenstaande code gebruik. Als de range een keer wijzigt, dan hoef ik niet de code aan te passen.

3. Mooiste is trouwens:

code:
1
Columns(1).End(xlDown).Offset(1, 0).Row


Weet je meteen welke row leeg is :P

[ Voor 7% gewijzigd door BtM909 op 02-12-2003 14:29 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
ik kom ietsjes verder maar ik begrijp niet helemaal wat precies elke code inhoudt:

Range("D6").Select

Selecteert mijn cel

Selection.Cut

knipt de inhoud

Selection.End(xlDown).Select

?? selecteert het einde (xlDown??)

ActiveCell.Offset(4, 0).Select

?? selecteert de actieve cel (=toch D6?) en offset 4 cellen naar beneden??

ActiveSheet.Paste

plakt de inhoud op het actieve werkblad (uiteindelijk van D6 naar D20...)


Jullie hebben het over de volgende code die ik ook niet begrijp:

Columns(1).End(xlDown).Offset(1, 0).Row

Wat doet deze code (uitproberen werkt niet: foutmelding)?

alvast bedankt...!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Klik op het woordje row en doe F1, dan zie je wat het doet: het geeft als getal de rij weer.

Je wilt trouwens geen cut&paste gebruiken, maar gewoon de waarde even in een variabele zetten (of rechtstreeks uitlezen: uiteindelijk zeg je dan ActiveCell.value = Range("D6").value).
actieve cel (=toch D6?)
Nee, je hebt net met Selection.End(xlDown).Select de laatste gevulde cel in je huidige selectie geselecteerd.
edit:

En nogmaals; als dit voor werk is oid, zou ik er toch echt even een boek bijpakken - anders krijg je alles bij elkaar erg ongestructureerde code, iets dat je niet wilt. Maar als het gewoon is om te lezen / voor een prive-spreadsheet is dit natuurlikj leuk "prutsen" om te leren dus dan heb ik niets gezegd :)

[ Voor 30% gewijzigd door F_J_K op 02-12-2003 15:12 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Mensen, het lukt mij nog steeds niet...

Ik zal nog een keer proberen om het uit te beelden wat ik bedoel:

invoerveld:
Jeroen (bv A10)

lijst:
rij1=pietje (cel A1)
rij2=klaas (cel A2)
rij3=hier moet "jeroen" komen te staan dmv de macro (cel A3)

En als als ik de vierde keer een naam invul dan moet deze naam komen te staan in de volgende lege cel (cel A4)

Ohja1: knippen-plakken wil ik wel gebruiken zodat de invoervelden weer leeg worden zodat ik de volgende naam kan gaan invullen

Ohja2: het is prive dus een beetje rommelige code mag wel...

Tot nu toe heb ik dit:

Range("D6").Select
Selection.Cut
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste

Ohja3: hoe past deze regel in het verhaal

Columns(1).End(xlDown).Offset(1, 0).Row

alweer bedankt!

  • Frisbee
  • Registratie: Februari 2000
  • Niet online
Dus Jeroen staat in D6?

Probeer dan eens:
Range("D6").Select
Selection.Cut
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Range("D6").Select

Voeg nogmaals Range("D6").Select toe aan het eind om terug te gaan naar je invulveld.

[ Voor 29% gewijzigd door Frisbee op 02-12-2003 15:52 ]


Verwijderd

Topicstarter
Nou deze frisbee gooi ik niet meer terug want dit is PRECIES wat ik bedoel!

Bij deze wil ik graag iedereen bedanken! keep up the good work!
Pagina: 1