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

Formules kopiëren als voorwaarde waar is d.m.v. VBA

  • Onderwerp starter Onderwerp starter SiCe
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

SiCe

Gebruiker
Lid geworden
25 nov 2001
Berichten
102
Weet iemand VBA code waarmee de formules uit de bovenliggende rij gekopieerd worden naar de volgende rij zodra in kolom B van deze volgende rij een waarde staat. Als ik dus bijvoorbeeld in cel 5B een waarde ingeef dat dan alle formules uit rij 4 gekopieerd worden naar rij 5 enz.
 
Bekijk......

CiSe,

Bekijk dit voorbeeld eens.
Alleen het blauwe vak per regel invullen en een druk op de knop na iedere regel.


Groet,
Ferenc
 

Bijlagen

Ferenc

ik heb je code efficiënter gemaakt:

Code:
Sub copy()
    Dim c As Range, MyRange As Range
    Set MyRange = Range("A2:A100")
    For Each c In MyRange
        With c
            If .Value <> "" Then .Offset(-1, 1).Resize(1, 6).copy .Offset(0, 1)
        End With
    Next
    Range("A1").Select
End Sub

Voor zoiets kleins als hier maakt het niet al te veel uit, maar wel als je zoiets op 1000 rijen en 5 tabbladen moet doen, bijvoorbeeld.

Wigi
 
Bedankt voor de reacties maar is niet wat ik bedoel. Met formules en een macro lukt me dit wel maar ik wil geen gebruik maken van formules omdat ik vooraf niet weet hoeveel regels ik nodig heb.
Het zou zo moeten zijn dat als ik in cel B2 een waarde invul de formules uit A1 en C1 t/m K1 gekopieerd worden naar A2 en C2 t/m K2, als ik B3 invul de formules uit rij A1 en C1 t/m K1 gekopieerd worden naar A3 en C3 t/m K3, als ik B4 invul de formules uit rij A1 en C1 t/m K1 gekopieerd worden naar A4 en C4 t/m K4 enz.
Hoop dat het zo duidelijker is.
 
Is dit beter?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 2 And .Row > 1 And .Count = 1 Then
            .Offset(-1, -1).copy .Offset(0, -1)
            .Offset(-1, 1).Resize(1, 9).copy .Offset(0, 1)
        End If
    End With
End Sub

Wigi
 
Dit werkt bijna. Alleen wordt hiermee alles uit bovenstaande rij gekopiëerd, dus ook waarden, en de opzet is dat enkel de formules worden gekopiëerd.
 
Dit werkt bijna. Alleen wordt hiermee alles uit bovenstaande rij gekopiëerd, dus ook waarden, en de opzet is dat enkel de formules worden gekopiëerd.

Zo dan?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Integer
    With Target
        If .Column = 2 And .Row > 1 And .Count = 1 Then
            If Cells(.Row - 1, 1).HasFormula Then Cells(.Row - 1, 1).copy Cells(.Row - 1, 1)
            For col = 3 To 9
                If Cells(.Row - 1, col).HasFormula Then Cells(.Row - 1, col).copy Cells(.Row, col)
            Next
        End If
    End With
End Sub

Wigi
 
Ja Wigi, dit is wat ik bedoel. Heb een kleine aanpassing moeten maken (zie onder) maar werkt perfekt. Hartelijk dank.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Integer
With Target
If .Column = 2 And .Row > 1 And .Count = 1 Then
If Cells(.Row - 1, 1).HasFormula Then Cells(.Row - 1, 1).copy Cells(.Row, 1)
For col = 3 To 9
If Cells(.Row - 1, col).HasFormula Then Cells(.Row - 1, col).copy Cells(.Row, col)
Next
End If
End With
End Sub
 
Hoi,

Volgens mij is die functionaliteit 'standaard' in Excel ingebouwd .....
zie bijlage
 

Bijlagen

  • formulier.JPG
    formulier.JPG
    33,6 KB · Weergaven: 77
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan