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

VBA ActiveCell.Copy Als cel al gevuld is 1 naar beneden

Status
Niet open voor verdere reacties.

oceanrace

Gebruiker
Lid geworden
14 mei 2008
Berichten
198
Hallo,
de volgende code kopieert de actieve cel naar blad1 A48, deze wil ik graag veranderen:

Code:
Sub copycel()
    ActiveCell.Copy
    Sheets("blad1").Select
    Range("A48").Select
    ActiveSheet.Paste
End Sub

Het is de bedoeling dat als cel A48 al gevuld is, hij verder gaat naar A49.
Als A49 ook al gevuld is dan moet hij kopieren naar A50.
Hij mag niet verder naar beneden dan A50, dan moet hij weer bij A48 beginnen.

Weet iemand raad?

Groet,
Bas
 
Laatst bewerkt:
H
Hij mag niet verder naar beneden dan A50, dan moet hij weer bij A48 beginnen.
En heb je er dan óók over nagedacht wat er met de cellen A49 en A50 moet gaan gebeuren??? Zoals je 't nu omschrijft zullen de 3 cellen éénmalig worden gevuld. Daarna alleen nog maar cel A48...

Groet, Leo
 
Misschien kan het eerst dat alleen A48, A49 en A50 worden gevuld en daarna niets meer?
 
Hoi Leo,

Het liefst zou ik het als volgt willen hebben:


Kopieren naar A48
dan naar A49 (indien A48 al is gevuld)
dan naar A50 (indien A49 al is gevuld)

Groet,
Bas
 
HHet liefst zou ik het als volgt willen hebben:
Kopieren naar A48
dan naar A49 (indien A48 al is gevuld)
dan naar A50 (indien A49 al is gevuld)

Ja, dát snapte ik... Máár wat moet er daarná gebeuren??? Kijk, het vullen van cel A48 kan je zelf al, dus da's niet zo moeilijk. De vervolgstap is dat je niet rechtstreeks gaat wegschrijven naar cel A48, maar de 3 cellen gaat testen op 'gevuld zijn'. Als je nu dus weer zou zeggen dat je ná cel A50 terug wilt naar cel A48 kan dat! Helaas blijf je vanaf dat moment 'hangen' op die cel omdat bij iedere vervolgtest de 3 cellen als gevuld worden gezien en dús zal cel A48 constant gebruikt worden.

Doe nou even niets overhaast, en bepaal voor hetgeen je nu aan 't bouwen bent WAT je wilt...

Groet, Leo
 
Ik kan de cellen altijd zelf weer leeg maken, maar als A48 leeg is en A49 en A50 niet zou ik graag weer A48 vullen.
(dus de enige lege cel)
 
Bas, En hoe komt die cel A48 ineens weer leeg??? Geef je dan nu ineens aan dat ná het vullen van de 3 cellen, dat je her en der 1 van die 3 cellen gaat legen??? En zeg je dan dat er dus gekeken moet worden welke van de 3 er leeg is? En wat dan als ze alle drie gevuld zijn???

Zolang ik nog vragen kan verzinnen, is er geen programma mogelijk. Dit MOET je echt voor jezelf op een rijtje hebben anders begin ik er niet aan.

Groet, Leo
 
Hoi Leo,

Is het ook mogelijk dat je van de cellen A48, A49 en A50 degene vult die leeg is?
 
Hoi Leo,

Als er niets leeg is dan ook niets vullen, als dat mogelijk is.

Ik had zelf zoiets bedacht, het werkt alleen niet...


Sub copycel()
ActiveCell.Copy
Sheets("blad1").Select
If Not IsEmpty("A48").Select Then
If Not IsEmpty("A49").Select Then
If Not IsEmpty("A50").Select Then
If Not IsEmpty("A48").Select Then
ActiveSheet.Paste
End Sub
 
Laatst bewerkt:
Deze werkt wel:

Code:
    Sub copycel()
    ActiveCell.Copy
    Sheets("blad1").Select
    Range("A50").End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
End Sub

Alleen als alledrie gevuld zijn komt er een foutmelding omdat de overige cellen beveiligd zijn.
Hoe kan ik de range beperken tot A48:A50?
 
Laatst bewerkt:
Probeer deze is...
Beetje lang maar hij werkt

Sub copycel()
ActiveCell.Copy
Sheets("blad1").Select
If Range("A48") = Empty Then
Range("A48").Select
ElseIf Range("A49") = Empty Then
Range("A49").Select
ElseIf Range("A50") = Empty Then
Range("A50").Select
Else
Range("A48").Select
End If
ActiveSheet.Paste

End Sub

Gr

Clickandknow
 
Het werkt!

De lengte van code is niet heel belangrijk toch?
Hoe heb je deze gemaakt?
 
Probeer deze eens
Code:
Sub tst()
    If WorksheetFunction.CountA([A48:A50]) = 3 Then Exit Sub
    ActiveCell.Copy [Blad1!A50].End(xlUp).Offset(1)
End Sub
 
Eerst nadenken over wat de vraag en wens is en dan je processor in je hersenpan aan het werk zetten.
Komt ook wel een stukje ervaring bij kijken...
Maar er zijn kortere wegen naar rome, en heb nog genoeg te leren :D
 
Oh jah vergeet het slotje niet en de waardering van het antwoord...
je kan altijd nog een beginnerscurses volgen (zie link)
 
Probeer deze eens
Code:
Sub tst()
    If WorksheetFunction.CountA([A48:A50]) = 3 Then Exit Sub
    ActiveCell.Copy [Blad1!A50].End(xlUp).Offset(1)
End Sub

Hoi Rudi,
Bovenstaande code werkt niet goed, tenminste hij doet niet wat de code van ClickandKnow wel doet...
Of ik moet iets over het hoofd zien.
 
Oh jah vergeet het slotje niet en de waardering van het antwoord...
je kan altijd nog een beginnerscurses volgen (zie link)

De formule die jij gemaakt hebt werkt goed.
Ik waardeer jullie hulp uiteraard zeer, ik wacht nog even met het slotje totdat deze formule uitgekristalliseerd is.
 
Ik was lekker een dagje de hort op, maar zie dat er al prima oplossingen gegeven zijn. De reden dat de code van ons Warme Bakkertje niet doet wat je wilt, komt omdat er een sheet-verwijzing mist in de 1e regel... (gok ik zo)

Code:
Sub tst()
    If WorksheetFunction.CountA([[B][COLOR="blue"]Blad1![/COLOR][/B]A48:A50]) = 3 Then Exit Sub
    ActiveCell.Copy [Blad1!A50].End(xlUp).Offset(1)
End Sub

Groet, Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan