Code vereenvoudigen (3 regels reduceren tot 1 regel)

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
947
Beste Helpmij'ers,

Wie kan deze code vereenvoudigen, ik ben ervan overtuigd dat deze drie regels veel eenvoudiger in één regel kan en scheelt veel programmeerwerk:

Code:
    If Range("b" & Target.Row) = "1" Then Range("D" & Target.Row).Value = Sheets("Diensten en prodcuten").Range("B2").Value
    If Range("b" & Target.Row) = "1" Then Range("K" & Target.Row).Value = Sheets("Diensten en prodcuten").Range("c2").Value
    If Range("b" & Target.Row) = "1" Then Range("M" & Target.Row).Value = Sheets("Diensten en prodcuten").Range("d2").Value

Alvast bedankt.

Groeten, Robert
 
Hoe je dat in 1 regel zou kunnen proppen weet ik niet maar het kan wel eenvoudiger:
Code:
If Range("B" & Target.Row) = "1" Then
    With Sheets("Diensten en prodcuten")
        Range("D" & Target.Row).Value = .Range("B2").Value
        Range("K" & Target.Row).Value = .Range("C2").Value
        Range("M" & Target.Row).Value = .Range("D2").Value
    End With
End If
Maar er zijn hier een paar sterren die alles in 1 regel krijgen, dus, wie weet ;)

En "prodcuten" moet neem ik aan "producten" zijn?
 
Laatst bewerkt:
Als er in de tussenliggende kolommen niets staat.
Code:
with Sheets("Diensten en prodcuten")
 If Range("b" & Target.Row) = "1" Then Range("D" & Target.Row).resize(,10) = array(.Range("B2").Value,"","","","","","",.range("c2").value,"",.range("d2").value)
end with
anders iets makkelijker geschreven met "with".
Code:
with Sheets("Diensten en prodcuten")
If Range("b" & Target.Row) = "1" Then   'of 1 ?
    Range("D" & Target.Row).Value = .Range("B2").Value
    Range("K" & Target.Row).Value = .Range("c2").Value
    Range("M" & Target.Row).Value = .Range("d2").Value
end if
end with
Denk ook om je bladnaam 'prodcuten' → 'producten'.

Edit: zeker acht minuten tijd aan gespendeerd. :D tijd @edmoor - hsv
 
Laatst bewerkt:
Heren bedankt.

Werkt prima :thumb:

In kolom L moet ik een korting kunnen plaatsen en werkt zoals gezegd bij de code van Harry nu niet. Ik vind die code echter heel mooi omdat het zo weinig regels zijn. Is er een mogelijkheid dat ik kolom L wel handmatig kan wijzigen?
 
Niet beter en niet korter in aantal regels, wel in de lengte ervan (als dat wat zou uitmaken):
Code:
Dim x As Integer, y As Integer
If Range("B" & target.Row) = "1" Then
y = 4
For x = 2 To 4
With Sheets("Diensten en producten")
Cells(target.Row, y).Value = .Cells(2, x).Value
End With
y = 11: If x = 3 Then y = 13
Next x
End If
End Sub
Wel even testen, want ik heb dit niet in Excel ingevoerd.
 
Code:
with Sheets(1)
 If cells(target.Row,2) = "1" Then cells(Target.Row,4).resize(,10) = split([B2] & space(5) & [c2] & " " & cells(target.row,12) & " " & [D2])
end with
 
Helaas werkt onderstaande code niet en wordt geel aangegeven. De eerste regel heb ik daarna aangepast zie onderstaande en werkt nog steeds niet.

Code:
With Sheets("Diensten en prodcuten")
 If Cells(Target.Row, 2) = "1" Then Cells(Target.Row, 4).Resize(, 10) = Split([B2] & Space(5) & [c2] & " " & Cells(Target.Row, 12) & " " & [D2])
End With
 
En het zijn nog steeds 3 regels ;)
 
mits in de juiste codemodule en de juiste gebeurtenis geplaatst:

Code:
 If cells(target.Row,2) = "1" Then cells(Target.Row,4).resize(,10) = split([B2] & space(5) & [c2] & " " & cells(target.row,12) & " " & [D2])
 
Het is nu idd één regel maar werkt bij mij niet en dat komt absoluut omdat ik te weinig VBA-kennis heb. Ik ga nu maar op save en gebruik de eerder genoemde optie tenzij iemand een nog betere methode heeft door bijvoorbeeld te werken met een zoekfunctie.

Hoe kan ik overigens een regel (van C tot N) weer verwijderen, ik loop vast in de volgende regel.

Code:
    'Regel verwijderen
    If Range("b" & Target.Row) = "" Then Range("c:n" & Target.Row) = ""
 
Achter de C en voor de dubbele punt mist er iets.
Of verwijder de dubbele punt plus de N, en werk met resize(,12).
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan