gegevens op de juiste plek in een database plakken

Status
Niet open voor verdere reacties.

mkleinsevert

Nieuwe gebruiker
Lid geworden
21 feb 2013
Berichten
2
Beste mensen,
ik wil een database vullen met gegevens. Ik heb een bijlage toegevoegd met een opzetje hiervoor.
De bijlage bestaat uit 2 werkbladen, nm. invulblad en database.
In het invulblad vul ik gegevens en geef aan in welke rij ik deze gegevens in de database wil opslaan. Vervolgens klik ik op de knop "gegevens plakken" om de gegevens op de juiste plaats in de database te zetten.
Wat er op dat moment feitelijk gebeurt is dat rij 2 van het werkblad "database" wordt geplakt in de aangegeven regel in de database. Stel dat de ingevulde gegevens geplakt moeten worden in regel 2 van de database, dan wordt feitelijk rij 2 van het werkblad "database" geplakt in rij 6 van dat werkblad. Stel dat de ingevulde gegevens geplakt moeten worden in regel 6 van de database, dan wordt rij 2 van het werkblad "database" geplakt in rij 10 van dat werkblad.
Wie kan mij helpen dit op deze manier te realiseren?
Groet, MauriBekijk bijlage Gegevens plakken.xlsxce
 
Hetzelfde idee als Cobbe maar anders geschreven

Code:
Sub VenA()
  Sheets("Database").Cells(1).Offset([d4] + 5, 1).Resize(, 8) = Array([c4], [d4], [c5], [d5], [c6], [d6], [c7], [d7], [c8], [d8])
End Sub
 
VenA. Volgens mij zit jij met jouw code in cel B6 en ga je vanaf daar invullen.

Je start op Blad Database in Cells(1) = A1. Vanaf daar ga je middels de .Offset([d4] + 5,1), 5 rijen naar beneden en 1 kolom naar rechts. Die range D4 hierin doet volgens mij niet veel. Of ik zie iets over het hoofd. :confused:

Range D4 = volgens mij rij 4 kolom D. Als ik de code letterlijk zou nemen dan zou je na de Offset, terecht komen in rij 9 kolom E. Echter dit gebeurd niet. Vandaar dat ik dit denk en wellicht mij verwar.

Code:
MsgBox Sheets("Database").Cells(1).Offset(5, 1).Address 'Geeft range B6

MsgBox Sheets("Database").Cells(1).Offset([d4] + 5, 1).Address 'Geeft range B6
 
Laatst bewerkt:
@masala09,

Je draait de code in het verkeerde blad.
En D4 moet volgens mij D2 zijn.

Ik heb er een 'With' omheen gezet, zodat het beter zichtbaar is en zodat het niet uitmaakt in welk blad je de code draait.
Code:
With Sheets("invulblad")
  'Sheets("Database").Cells(1).Offset(.[d2] + 3, 1).Resize(, 8) = Array(.[c4], .[d4], .[c5], .[d5], .[c6], .[d6], .[c7], .[d7], .[c8], .[d8])
  Sheets("Database").Cells(.[d2] + 4, 2).Resize(, 8) = Array(.[c4], .[d4], .[c5], .[d5], .[c6], .[d6], .[c7], .[d7], .[c8], .[d8])  'mijn gedachte
End With
 
@masala09,

Hoewel het de verkeerde cel was, zoals terecht door HSV opgemerkt, dit moet inderdaad D2 zijn is deze cel wel van belang. In D2 staat de rij waar naar weggeschreven moet worden.

Jouw
Code:
.Cells.Offset(5, 1).Address
zal altijd B6 opleveren. Terwijl
Code:
.Cells.Offset([d4] + 5, 1).Address
een cel teruggeeft afhankelijk van wat in D4 staat.
 
VenA ik weet dat mijn codes altijd B6 zouden teruggeven. Waar het mij om ging is dat ik een foutje constateerde. Een fout die HSV dus ook had opgemerkt. d4 moet d2 zijn en uiteraard HSV, wat ik ook had gedaan, was deze in de With constructie geplaatst zodat het juiste blad werd aangehouden. De door VenA gegeven code was slechts een fragment.

Daar ik in twijfel werd gebracht of ik iets over het hoofd zag, reageerde ik. Feit is dat wij het er allen over eens zijn en dus verdere discussie onnodig is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan