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

Celrand met een macro aanpassen

Status
Niet open voor verdere reacties.

susanthuis

Gebruiker
Lid geworden
5 mei 2008
Berichten
198
Beste Helmij,

Ik zou met een macro de kleur van een celrand willen aanpassen, als de cel leeg is. Stel cel A1 is gevuld, dan celrand laten staan, Als cel A2 leeg is, dan celrand in wit, etc. Zou iemand mij daarbij kunnen helpen?

Dank alvast!

Groeten,

Susan
 
Zet de macrorecorder aan, voer uit wat je hierboven schreef, stop de macrorecorder.
De macro die je dan hebt, behoeft slechts kleine aanpassingen.
 
Zet de macrorecorder aan, voer uit wat je hierboven schreef, stop de macrorecorder.
De macro die je dan hebt, behoeft slechts kleine aanpassingen.

Hoe kan ik in deze regels dan combineren?
Sub KolomAenB()
[A2:A100] = [if(A2:A100=offset(A2:A100,-1,0),"",A2:A100)]
End Sub

Sub Opmaak()
'
' Opmaak Macro
'

'
Range("A:A").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = 0
.Weight = xlThin
End With

With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
End Sub
 
Eerst had je het over 1 of 2 cellen, nu over een hele kolom.
Je schreef: "Stel cel A1 is gevuld, dan celrand laten staan, Als cel A2 leeg is, dan celrand in wit, etc."
Vraag: wat bedoel je precies? Moet elke cel in kolom A waarin iets staat een zwarte celrand krijgen en elke cel die leeg is, niet? Je kunt overigens over het algemeen beter geen hele kolom definiëren (noch in een macro, noch in formules in het werkblad) als je die hele kolom niet volledig gebruikt (en dat is meestal het geval).
 
Eerst had je het over 1 of 2 cellen, nu over een hele kolom.
Je schreef: "Stel cel A1 is gevuld, dan celrand laten staan, Als cel A2 leeg is, dan celrand in wit, etc."
Vraag: wat bedoel je precies? Moet elke cel in kolom A waarin iets staat een zwarte celrand krijgen en elke cel die leeg is, niet? Je kunt overigens over het algemeen beter geen hele kolom definiëren (noch in een macro, noch in formules in het werkblad) als je die hele kolom niet volledig gebruikt (en dat is meestal het geval).

Zapatr, dan wijzig ik mijn vraag. Het gaat niet om de hele kolom van A. Mijn vraag is dan: Als cel A1 gevuld is, dan de celrand laten staan. Als cel A2 leeg is, dan de celrand wijzigen in wit.
 
Ok,
en moeten er ook formules in A1:A100 geplaatst worden?
Ik heb de indruk dat je probeert: =als(a2=a1;"";a2) , maar dat kan niet werken als die formule in A2 staat want dan krijg je een kringverwijzing. Omdat je de macro kolomAenB() noemt, heb ik de indruk dat je kolom B erbij wil betrekken. Leg even uit a.u.b.
En nog een vraag: wil je de macro zelf starten of moet die bij elke wijziging in molom A automatisch uitgevoerd worden?
 
Ok,
en moeten er ook formules in A1:A100 geplaatst worden?
Ik heb de indruk dat je probeert: =als(a2=a1;"";a2) , maar dat kan niet werken als die formule in A2 staat want dan krijg je een kringverwijzing. Omdat je de macro kolomAenB() noemt, heb ik de indruk dat je kolom B erbij wil betrekken. Leg even uit a.u.b.
En nog een vraag: wil je de macro zelf starten of moet die bij elke wijziging in molom A automatisch uitgevoerd worden?

In kolom A staan geen formules. De macro kolomAenB zorgt ervoor dat als cel a2 gelijk is aan cel a1, dan moet de cel leeg zijn. Als de cel a2 gevuld is, moet cel leeg zijn. In dat laatste geval wil ik de celranden in wit. De macro wil ik zelf opstarten omdat de Excel bestanden steeds anders heten.
 
Toch nog enkele vragen. Je schrijft:
"als cel a2 gelijk is aan cel a1, dan moet de cel leeg zijn."
1. Bedoel je met "de cel" A1 of A2?
2. Is het zo dat standaard in A1:A100 de cellen een zwarte rand hebben en dat die rand moet verdwijnen in de cellen die leeg zijn?
3. Bedoel je met een witte rand: geen rand of een witte rand?
 
Toch nog enkele vragen. Je schrijft:
"als cel a2 gelijk is aan cel a1, dan moet de cel leeg zijn."
1. Bedoel je met "de cel" A1 of A2?
2. Is het zo dat standaard in A1:A100 de cellen een zwarte rand hebben en dat die rand moet verdwijnen in de cellen die leeg zijn?
3. Bedoel je met een witte rand: geen rand of een witte rand?

Antwoord op je vragen:

1. Cel a2 moet leeg zijn.
2. Ja
3. Geen rand
 
Kijk of je hier wat mee kunt.
Wijzig indien nodig in de macro "Blad1" in de door jou gebruikte naam.
Toets Ctlr-q om de macro uit te voeren.
 
In de macro gebruik ik de ene keer 100 en de andere keer 200, dat wordt hierbij gecorrigeerd.
En om ook A1 niet ongemoeid te laten, gebruik dit:
Code:
Sub macro1()
With Sheets("Blad1")
'Deze macro is geschreven door Zapatr
For x = 1 To 200
.Range("A" & x).BorderAround , Weight:=xlThin
If x > 1 Then
If .Range("A" & x).Value = .Range("A" & x - 1).Value Then
.Range("A" & x).Value = ""
End If
End If
Next x
.Range("A1:A200").SpecialCells(xlCellTypeBlanks).Borders.LineStyle = xlNone
End With
End Sub
 
Kijk of je hier wat mee kunt.
Wijzig indien nodig in de macro "Blad1" in de door jou gebruikte naam.
Toets Ctlr-q om de macro uit te voeren.

Dankjewel! Volgens mij werkt het prima zoals het hoort! Maar als cel A3 leeg is omdat cel A2 en A3 gelijk zijn zal cel A4 blijven staan. Terwijl cel A4 hetzelfde is als cel A2. Hoe dan de macro aan te passen?
 
Herziene versie:
Code:
Sub macro3()
Dim x As Integer, y As Integer
With Sheets("Blad1")
'Deze macro is geschreven door Zapatr
For x = 200 To 1 Step -1
.Range("A" & x).BorderAround , Weight:=xlThin
If x > 1 And Range("A" & x).Value <> "" Then
If .Range("A" & x).Value = .Range("A" & x - 1).Value Then
.Range("A" & x).ClearContents
End If
End If
Next x
.Range("A1:A200").SpecialCells(xlCellTypeBlanks).Borders.LineStyle = xlNone
End With
End Sub
 
Laatst bewerkt:
Het kon wat korter,
in het bericht hierboven heb ik daarom de macro aangepast.
 
herziene versie:
Code:
sub macro3()
dim x as integer, y as integer
with sheets("blad1")
'deze macro is geschreven door zapatr
for x = 200 to 1 step -1
.range("a" & x).borderaround , weight:=xlthin
if x > 1 and range("a" & x).value <> "" then
if .range("a" & x).value = .range("a" & x - 1).value then
.range("a" & x).clearcontents
end if
end if
next x
.range("a1:a200").specialcells(xlcelltypeblanks).borders.linestyle = xlnone
end with
end sub

top:):) Dankjewel!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan