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

Cellen automatisch kleuren in een bereik

Status
Niet open voor verdere reacties.

Georgyboy

Terugkerende gebruiker
Lid geworden
6 jan 2007
Berichten
1.020
Besturingssysteem
Windows 11
Office versie
365
Goede avond,

mijn collega wil in excel de cel die al dan niet leeg is verslepen
van kolom C naar kolom D (C3 naar D3)
In kolom C is de cel blauw en bij verslepen naar kolom D moet dit rood zijn
als men de rode cel in kolom D terug naar kolom C sleept moet dit terug blauw zijn.

dit is zo voor een 50 tal cellen per kolom

Kan dit met een functie, zo ja welke ?
of met een macro ?, zo ja, hoe ?

Groetjes,
Georgyboy,
 

Bijlagen

Beste Georgyboy,

Als je een cel versleept, dan doe je precies wat je zegt: Je versleept een cel, ook al wordt het adres (C3 wordt D3) anders. Alle eigenschappen van die cel gaan mee en dus ook de kleur.

Je zult dus met VBA moeten werken, of de cel kopiëren en dan alleen de formules of waarden plakken via Bewerken > Plakken Speciaal > Waarden/Formules.

Groeten,
Richard
 
Bedankt Richard

Ja ik begrijp het,

tja, VBA hé
nog té moeilijk voor me

Groetjes,
Georges
 
Bij het verslepen van een cel van de C-kolom naar de D-kolom, wordt de kleur aangepast.
C --> D = rood
D --> C = lichtblauw

Met vriendelijke groet,


Roncancio
 

Bijlagen

Bedankt Roncancio ,

Dat is het !

Jullie zijn echt super en behulpzaam

Groetjes,
Georgyboy
 
Dag Roncancio,

Laatste vraag, kan je even uitleggen wat dit van codes ?
Kunnen we dit ook via de macro recorder (opnemen en stoppen ?)

ik zou het ook graag kunnen, versta je

Bedankt Georges,

Dim iKol As Integer
Private Sub Worksheet_Change(ByVal Target As Range) "(werkblad wijzigd)"
If iKol = 0 Then
iKol = Target.Column
Else
Select Case Target.Column
Case 3
Target.Interior.ColorIndex = 8 "( = kleur keuze)"
Case 4
Target.Interior.ColorIndex = 3 "(= kleur keuze)"
End Select
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
iKol = 0
End Sub
_______________________________________________________________

Sub Macro1()
'
' Macro1 Macro
' De macro is opgenomen op 13-11-2008 door Angie.
'

'
Range("C3").Select
Selection.AutoFill Destination:=Range("C3:D3"), Type:=xlFillDefault
Range("C3:D3").Select
End Sub
Sub Macro2()
'
' Macro2 Macro
' De macro is opgenomen op 13-11-2008 door Angie.
'

'
Range("C6").Select
Selection.Cut Destination:=Range("D6")
Range("D6").Select
End Sub
 
De code onder de doorgetrokken streep is oud dus gaarne verwijderen.
De overige codes zal ik in stukken behandelen.
Code:
Dim iKol As Integer
Doordat de variabele iKol boven de andere codes staat behoudt het z'n waarde.

Code:
Private Sub Worksheet_Change(ByVal Target As Range) "(werkblad wijzigd)"
If iKol = 0 Then
iKol = Target.Column
Else
Select Case Target.Column
Case 3
Target.Interior.ColorIndex = 8 "( = kleur keuze)"
Case 4
Target.Interior.ColorIndex = 3 "(= kleur keuze)"
End Select
End If
End Sub
Bij een wijziging in het werkblad wordt gekeken of iKol leeg is of niet.
Als het leeg is dan krijgt iKol de kolomletter van de huidige kolom.
Hierna wordt gekeken wat de doelkolom is. Is dat C dan wordt de kleur lichtblauw (8). Betreft het de D-kolom dan is de kleur rood (3).
Als alternatief:
ipv
Target.Interior.ColorIndex = 8 "( = kleur keuze)"
kan dit ook:
Target.Interior.Color = vbCyan

en
Target.Interior.ColorIndex = 3 "( = kleur keuze)"
kan dit ook:
Target.Interior.Color = vbRed

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
iKol = 0
End Sub
IKol wordt weer leeggemaakt omdat anders de waarde behouden blijft.

Met vriendelijke groet,


Roncancio
 
Kunnen we dit ook via de macro recorder (opnemen en stoppen ?)

De macro recorder kan geen structuren aanbrengen in code zoals lussen, IF-THEN-ELSE structuren, SELECT CASE structuren... Daar moet je op studeren en kan je niet met de macro recorder.
 
Bedankt Roncancio,
Bedankt Wigi,

voor jullie vele steun en geduld !

Ik heb 2 boeken over macro´s maken in VBA,
van Wim de groot

Groeten,
Georgyboy
 
Als de kleuren je bevallen kan het ook met

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Target.Interior.ColorIndex = Target.column
End Sub

Dan wijzigt het vanzelf.
 
Dag Snb,

Bedankt voor je tip,
waar moet die dan staan ?

Private Sub Worksheet_Change(ByVal Target As Range) "(werkblad wijzigd)"
If iKol = 0 Then
iKol = Target.Column
Else
Select Case Target.Column
Case 3
Target.Interior.ColorIndex = 8 "( = kleur keuze)"
Case 4
Target.Interior.ColorIndex = 3 "(= kleur keuze)"
End Select
End If
End Sub
 
Rechtermuisklik op de bladtab van het blad waar dit event actief moet zijn, en dan de code plakken.

Graag in het vervolg ook code tags gebruiken hier op het forum.

Wigi
 
Dag Wigi,

Wat bedoel je juist met code Tags ?
wat moet ik in het vervolg doen ?

Nu compuleerfout (in het rood)

Dit gedaan : onder de lijn code geplakt

Dim iKol As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
If iKol = 0 Then
iKol = Target.Column
Else
Select Case Target.Column
Case 3
Target.Interior.ColorIndex = 8
Case 4
Target.Interior.ColorIndex = 3
End Select
End If
End Sub
_________________________________________________________
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
iKol = 0
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.ColorIndex = Target.Column
End Sub
 
Wat Wigi bedoelt is om code zo weer te geven.
Code:
Dim iKol As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
If iKol = 0 Then
iKol = Target.Column
Else
Select Case Target.Column
Case 3
Target.Interior.ColorIndex = 8
Case 4
Target.Interior.ColorIndex = 3
End Select
End If
End Sub
De code tags is het # teken bovenin het scherm.
Dus eerst de code selecteren en vervolgens op # klikken.

De fout komt omdat je 2 keer Worksheet_Change in je code hebt staan en dat kan niet.

Met vriendelijke groet,


Roncancio
 
Dag Rocancio,

bedankt voor Uw info,

zo dus:

Code:
Dim iKol As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
If iKol = 0 Then
iKol = Target.Column
Else
Select Case Target.Column
Case 3
Target.Interior.ColorIndex = 8
Case 4
Target.Interior.ColorIndex = 3
End Select
End If
End Sub

Weer iets bijgeleerd, bedankt !
 
zo dus:

Code:
Dim iKol As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
If iKol = 0 Then
iKol = Target.Column
Else
Select Case Target.Column
Case 3
Target.Interior.ColorIndex = 8
Case 4
Target.Interior.ColorIndex = 3
End Select
End If
End Sub

Inderdaad.:thumb:

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan