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

Invoer automatisch verplaatsen in Excel

Status
Niet open voor verdere reacties.

minifreak

Gebruiker
Lid geworden
23 feb 2012
Berichten
8
Ik ben bezig met het maken van een excel sheet om produkten te gaan ordenen.
Hiervoor is de gedachte heel eenvoudig, maar de truc 'achter de schermen' in excel mis ik...
Wat ik graag zou willen is een tabblad waarop ik slechts 1 cel heb (in het midden ofzo) waarin ik iets kan invoeren.
Deze invoer moet vervolgens worden "gecheckt" en op basis van de invoer worden verplaatst naar een bijbehorend ander tabblad.

In het kort en simpel uitgelegd: Als ik op tabblad 1 in die ene cel een getal invoer dat begint met cijfer 1 moet de invoer worden verplaatst naar een tabblad met de naam 1, in de eerste beschikbare lege cel.
Is de invoer een getal dat begint met cijfer 2, moet de hele inhoud worden verplaatst naar tabblad 2 etc. etc.
Na het verplaatsen is de invoercel op tabblad 1 weer leeg en klaar voor de volgende invoer.

Als ik een basis opzet heb die dit doet, kan ik zelf wel weer aan de slag met alle andere mogelijke opties in excel zoals kijken of de invoer al bestaat, of invoer gaan "checken" op basis van tekst etc.
Wie kan me helpen met dit 1ste stukje noodzakelijk code ???
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$10" Then 'het adres van de betreffende cel
        Select Case Left(Target.Value, 1) 'check op het eerste cijfer van de invoer
            Case 1
                Target.Copy Sheets("1").Range("A65536").End(xlUp).Offset(1) 'eerstvolgende lege cel in kolom A
            Case 2
                Target.Copy Sheets("2").Range("A65536").End(xlUp).Offset(1)
        End Select
    End If
End Sub
Plak deze code in de module van je invoerblad
 
Waar moet ik dit inplakken dan ??
Ik heb al een aantal knoppen met Macro op deze sheet staan, en als ik deze code er bij ga plakken geeft ie foutmeldingen. Is er een specifieke plek waar je dit moet plakken ??
 
Zoals ik al zei, in de bladmodule van je invoerblad. Echter van elke Event-macro mag er in die module maar 1 staan, anders foutmeldingen.
Is dit het geval zal je beide moeten gaan samensmelten tot 1 Event-macro.
Anders zal je een voorbeeld moeten posten met al je macro's in zodat wij het eens kunnen bekijken.
 
Oke, Ik heb het dus wel goed geplakt, en de andere macro's geven geen problemen.
Hij geeft een Run-Time error '9': Subscript out of range
Ik probeer nu de code naar makkelijk leesbaar te vertalen voor mezelf maar loop hierbij ook tegen vragen aan.
Ik neem aan dat de tekst in groen iets is wat ik zelf nog moet invullen / aanpassen
De regel: If Target.Address = "$C$10" Then 'het adres van de betreffende cel ??
Wat gebeurt hier dan precies ?? als ik in cel C10 een getal invoer zou dit dus gecheckt moeten worden, dat gebeurt volgens mij in de regels die eronder staan, als het een 1 is, wordt er een handeling uitgevoerd en bij getal2 ook, maar wat moet er achter If Target.Address = "$C$10" Then komen te staan ??
 
Beetje zoeken, maar de groene tekst hoef ik dus niet zelf aan te passen, de code is zoals ie is, maar geeft alleen wel die foutmelding....
Ik heb even de "" weggehaald bij de controle op 1 of 2 en dan werkt het wel
 
Laatst bewerkt:
Warme bakkertje vroeg ook als het niet werkt Plaats dan even het bestandje of een voorbeeld.
 
Als ik er helemaal niet meer uitkom had ik het bestandje geplaatst, maar ik wilde natuurlijk ook zelf gaan puzzelen daar leer je tenslotte het meeste van.
Ook nu probeer ik nog steeds de code te snappen en er verder op te borduren maar dat gaat niet helemaal lekker.
Zoals ik zei, het werkt nu wel door de "" weg te halen.
Zet ik cijfer 1 in de cel, wordt deze keurig verplaatst, en ook met cijfer 2 gebeurt dit maar hij zet cijfer 1 op Sheet1 in de eerstvolgende lege cel in kolom A en cijfer 2 zet hij op Sheet2 in de eerstvolgende cel in kolom A
Ik ging ervan uit dat als ik dit stukje toevoeg aan de code :
Case 3
Target.Copy Sheets(3).Range("A65536").End(xlUp).Offset(1)
het cijfertje 3 dan wel op Sheet3 terecht zou komen in de eerstvolgende cel in kolom A maar dat gebeurt niet ??
Ook als ik overal Sheets(1) neerzet in de code, wordt cijfer 2 nog steeds op Sheet2 geplaatst.
Nu is het een erg kleine code maar waar zit het stukje wat bepaalt welk getal op welk tabblad terecht komt ???
m.a.w. zeg dat ik er nu nog iets aan wil toevoegen die bijvoorbeeld een invoer van getal 5 ook op Sheet1, eerstvolgende cel in kolom A neerzet, waar doe ik dit dan ???
 
Op welk blad de waarde terecht moet komen heb jij zelf gevraagd nl het 1ste cijfer van een getal dat ik invoer bepaalt het blad waarheen geschreven moet worden.
 

Bijlagen

Nah, wat raar :(

Ik open het bestandje en het werkt zoals ik dacht dat het zou werken, dus inderdaad de toevoeging met Case3 verplaatst de waarde naar Sheet3 en het werkt gewoon, als ik de regel toevoeg aan het bestaande stukje code deed ie het niet
Ik heb nu een nieuwe excel sheet gemaakt met deze code en ja hoor, het werkt gewoon, precies zoals ik dus al dacht (vreemd, maar het werkt in ieder geval en ik snáp het tenminste)
Ik ben er ook al achter hoe ik na het controleren en verplaatsen van de inhoud, de originele cel (C10) kan leegmaken dus weer een stap verder
Ik moet nu enkel nog zien uit te vinden hoe er niet gecontroleerd kan worden op 1 cijfer, maar op meerdere cijfers.
Stel dat ik cijfer 1 invoer en de waarde keurig naar Sheet1 gaat, maar als ik bij waarde 10 een verplaatsing zou willen naar Sheet10 dan moet er dus een controle zijn op 2 getallen ipv 1
Mocht dit een simpele toevoeging zijn hoor ik het graag, anders puzzel ik hier nog wel het een en ander mee door, ik ben tenslotte al blij met het resultaat wat ik nu heb
 
Maar hoe gebeurt de invoer nu juist op je 1ste blad, enkel het cijfer van het werkblad waarheen geschreven moet worden (1, 2, 3, ...10, 11,....) of een getal van meerdere cijfers waarop gecontroleerd moet worden op het eerste cijfer ?
Ik stel je deze vraag omdat je je in je opeenvolgende posts tegenspreekt nl in post#1 stel je een getal waarop een controle moet gedaan worden maar in je laatste post spreek je over als ik 1 inbreng ==> blad 1 als ik 10 inbreng ==> blad 10
 
Zoals ik al zei, de code zoals deze nu werkt is zoals het moet, ik zat alleen achteraf te bedenken dat het misschien wel makkelijk zou zijn (ooit) als er gecontroleerd kon worden op getallen groter dan 9. Vandaar ook de opmerking dat als het een simpele toevoeging zou zijn aan de reeds bestaande code dit erg makkelijk zou zijn als ik deze nu vast wist. Als blijkt dat de hele code nu opnieuw gemaakt moet gaan worden en dit is een stuk meer werk dan hou ik het gewoon bij wat ik reeds heb want dit werkt voor nu al prima
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan