Hoe kopieer ik cellen naar een gewenste sheet?

Status
Niet open voor verdere reacties.

Tijger81

Gebruiker
Lid geworden
2 jan 2010
Berichten
397
Hallo,

Ik heb de onderstaande code. Deze zorgt ervoor dat ik dmv een knop een rij met cellen kan kopieren van de ene naar de andere sheet. En dat hij daarna de invulde cellen op de sheet INvoer weer leegmaakt.
In de cellen moet bijvoorbeeld de: datum, dag en cursus worden ingevuld en deze worden dan gekopieerd naar de andere sheet. Alleen kan ik de code ook zo maken dat wanneer iemand in 3 cellen 12 feb dinsdag Excel invuld. Dat deze cellen gekopieerd worden naar een sheet die dinsdag heet?. En wanneer ze bijv: 13 feb woensdag Word invullen dat de cellen naar een sheet die woensdag heet wordt gekopieerd. Nu wordt alles gewoon nameliujk gekopieerd naar sheet (bestand).

'
Code:
Tekst van invoer naar bestand kopieren
 With Sheets("bestand")
 .Rows(3).Insert Shift:=xlDown
 Worksheets("invoer").Range("C15:K15").Copy
 With .Range("A3:I3")
 .PasteSpecial xlPasteValues
 .Borders.LineStyle = xlContinuous
 .Interior.Pattern = xlNone
 End With
 Worksheets("invoer").Range("D15:K15").ClearContents
 End With
 End If

Wie kan mij op weg helpen?
 
Laatst bewerkt door een moderator:
Vervang "bestand" gewoon door het celadres waar de weekdag instaat.
bv.
Code:
With Sheets(Sheets("Invoer").Range("D15").Value)
 
Waar moet ik dat aanpassen in mijn code?
Als ik bijvoorbeeld heb:
12 feb Dinsdag EXCEL
13 feb Woensdag WORD
Kopieerd hij dan met jouw code de regel met dinsdag erin naar sheet met als naam Dinsdag en de regel met woensdag erin naar sheet met als naam woensdag?
 
NEEN.
In je voorbeeldcode kopiëer je steeds dezelfde regel, in je laatste vraag spreek je ineens over 2 regels ?????
Plaats eens een voorbeeldbestand met de situatie zoals die zich voordoet en wij bezorgen je een code werkend voor die situatie.
 
Sorry voor de onduidelijkheid.
Er wordt elke keer 1 regel ingevuld door iemand. Die drukt dan op een macroknop en dan wordt de inhoud van die regel gekopieerd naar een andere sheet (bestand).
Op die andere sheet komt de gekopieerde regel te staan. Daarna wordt de regel in de bron sheet weer leeg gemaakt. Zodat hij weer opnieuw ingevuld kan worden.
Elke keer wordt dus de inhoud van de regel gekopieerd naar sheet Bestand. De regel bestaat uit cellen met de dag, datum en programma. Nu ben ik meer sheets aan het maken met als naam de werkdagen. Maandag , dinsdag, enz.. Als iemand dus bijv: 12 feb dinsdag Word heeft ingevuld. Dan moet de regel gekopieerd worden naar sheet Dinsdag. Maar vult iemand
13 feb woensdag excel in dan moet de regel gekopieerd worden naar sheet woensdag.

Dus het is eigenlijk if exist Dinsdag in Range C15:K18 then copy range to sheet: Dinsdag
 
Laatst bewerkt:
Plaats aub een voorbeeldbestand, want ik volg niet meer.
Eerst spreek je over 1 regel, dan over 2 en nu kom je al met een matrix van 36 cellen waarin gezocht moet worden.
Probeer zo duidelijk en volledig mogelijk te zijn.
 
Hier is het bestand. De "bestand" sheet kan verborgen zijn. Het wachtwoord is "test"

Bekijk bijlage Dagen.xls

Dus wanneer in het dropdown menu maandag wordt gekozen dan moeten de 3 cellen gekopieerd worden naar sheet maandag. enz..
Nu wordt alles steeds gekopieerd naar de sheet bestand en dat wil ik graag veranderen
 
Laatst bewerkt:
Herlees grondig mijn 1ste antwoord (Post#2). Daar heb ik je de oplossing al letterlijk gegeven.:confused:
 
Ja je hebt gelijk dat is het antwoord.
Ik dacht eerst: hij begrijpt mij niet goed, want het antwoord kan nooit uit 1 zin codetje bestaan.

Maar het werkt nu. Perfect
 
Nog 1 vraagje: Kan ik ook de cellen laten kopieren naar een ander excelbestand dat ook dezelfde tabbladen heeft.

Met zoiets:
ThisWorkbook.Worksheets("Invoer").Range("D15").Copy _
Destination:=Workbooks("test.xlsx").Worksheets("Maandag").Range("E5")

Dit was de laatste werkende code:
With Sheets(Sheets("Invoer").Range("D15").Value)
.Rows(3).Insert Shift:=xlDown
Worksheets("invoer").Range("C15:L15").Copy
With .Range("A3:J3")
.PasteSpecial xlPasteValues
.Borders.LineStyle = xlContinuous
.Interior.Pattern = xlNone
End With
Worksheets("invoer").Range("D15:L15").ClearContents
End With
End If
 
Dat kan zeker maar ....
Zal het doelbestand steeds geopend zijn of gesloten ?
Zoja kan je rechtstreeks wegschrijven, anders zal je in je code eerst het doelbestand moeten openen, wegschrijven en terug sluiten met behoud van wijzigingen.
Je zal sowieso een controle moet uitvoeren of het doelbestand al dan niet open is, anders krijg je foutmeldingen.
 
Ja het doel bestand moet eerst geopend worden en na de plak actie weer worden gesloten.
 
Dit zou het moeten doen.
Code:
Sub Toevoegen()
    Application.ScreenUpdating = False
    wSheet = Sheets("Invoer").Range("D15").Value
    Workbooks.Open "G:\Test\Test1.xls" 'Aanpassen naar werkelijke situatie
    With ActiveWorkbook.Sheets(wSheet)
        .Rows(3).Insert Shift:=xlDown
        With .Range("A3:C3")
            .Value = ThisWorkbook.Sheets("invoer").Range("C15:E15").Value
            .Borders.LineStyle = xlContinuous
            .Interior.Pattern = xlNone
        End With
    End With
    ActiveWorkbook.Close True
    Sheets("invoer").Range("D15:E15").ClearContents
    Application.ScreenUpdating = True
    MsgBox "De gegevens zijn toegevoegd"

   End Sub

PS:Volgende keer geen bestanden meer posten die m'n hele Xl-layout om zeep helpen.:(
 
Hoi, Dat werkt perfect! Je bedoelt dat hij fullscreen opent.sorry.
Ik heb een vraagje: In het doelbestand heb ik een formule geplaatst in Cel D3. Dat is C3 + 100.
Alleen wanneer een nieuwe regel erbij komt vanuit het bronbestand dan zakt de formule ook een regel. Kan ik op een of andere manier ervoor zorgen dat de formule in cel D3 vastblijft. Ik heb dollarteken geprobeerd. Zodat in cel D3 altijd een antwoord komt te staan.

2014-02-19_123009.jpg
 
Laatst bewerkt:
De simpelste oplossing is indien mogelijk de formule in D2 te zetten aangezien er telkens een regel op 3 wordt toegevoegd.
 
Ja maar dan komt er elke keer een antwoord in D2. Ik wil dat in kolom D de antwoorden achter elke regel komt te staan.
 
Code:
With ActiveWorkbook.Sheets(wSheet)
        .Rows(3).Insert Shift:=xlDown
        [COLOR="#FF0000"].Range("D3").FormulaR1C1 = "=RC[-1]+100"[/COLOR]
        With .Range("A3:C3")
            .Value = ThisWorkbook.Sheets("invoer").Range("C15:E15").Value
            .Borders.LineStyle = xlContinuous
            .Interior.Pattern = xlNone
        End With
    End With

Had je zelf een beetje gezocht/geëxperimenteerd zou je deze toch ook zelf kunnen gevonden hebben.:o
Het forum heet nog steeds Helpmij, niet MaakHetVoorMij, dus een ietsiepietsie eigen inbreng mag toch wel verwacht worden.
 
Ik heb je formule geprobeerd,maar dat werkt niet, waarschijnlijk doe ik zelf iets verkeerd.maarja.
Maar ik heb het anders gedaan. Ik heb in het bron bestand een formule geplaatst achter de laatste kolom. Als ik dan op invoeren klik dan wordt de formule uitgevoerd en de regel incl de uitkomst van de formule gekopieerd naar de andere sheet.
Dat had ik al bedacht tijdens het wachten op antwoord op helpmij.
Dus de conclusie Maak het voor mij is te snel getrokken
Toch bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan