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

macro probleem

Status
Niet open voor verdere reacties.

eric2001

Terugkerende gebruiker
Lid geworden
23 mrt 2001
Berichten
1.600
Hallo,
Een vraagje voor de "macro-bakkers" onder ons.
De macro "balken" maakt in een selectie om en om gekleurde balken. Dit werkt goed.
De macro "lijnen" zet verticale lijnen in de selectie. Dit werkt goed.
Alleen, dan zijn mijn gekleurde balken verdwenen en andersom zijn mijn lijnen verdwenen.
Wat is hier fout?

Sub balken()
'
' balken Macro
' De macro is opgenomen op 22-3-2004 door Sparrow.
'
' Sneltoets: CTRL+b
'
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(RIJ(A1);2)=1"
Selection.FormatConditions(1).Interior.ColorIndex = 37
End Sub


Sub lijnen()
'
' lijnen Macro
' De macro is opgenomen op 11-3-2004 door Sparrow.
'
' Sneltoets: CTRL+l
'
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(KOLOM(A1);2)=0"
With Selection.FormatConditions(1).Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.FormatConditions(1).Borders(xlRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub
 
Zo te zien verwijder je eerst alle eerdere formats met Selection.FormatConditions.Delete

Je zult dus in die richting moeten zoeken.

De code lijkt me betrekking te hebben op conditional formats. Is dat echt nodig? Kun je niet beter gewoon het echte celformaat wijzigen?

Dus door de selectie 'heenlopen' en om en om de rij een bepaalde kleur geven? Ofwel om en om een linker danwel rechter border-line zetten.
 
Ha Palmpje,
Ik ben niet zo thuis in die macro-taal, maar ik had het ook al gezocht in die conditionele format en dus Selection.FormatConditions.Delete verwijderd, met hetzelfde resultaat. Ik heb het ook geprobeerd met elke kolom een linker lijn, idem dito.
Mocht je nog een idee krijgen laat het me dan weten. Als ik de oplossing zelf vind plaats ik hem uiteraard ook.
mvg,
Eric
 
Hoi Eric,

Palmpje heeft gelijk als gezegd wordt dat in de tweede macro die uitgevoerd wordt Selection.FormatConditions.Delete
gewist moet worden, maar ook niet onbelangrijk is dat in de tweede macro de 1e formule van de 1e macro overschrijft. In beide macro's staat namelijk
Selection.FormatConditions.Add Type:=xlExpression,Formula1:=

Oftewel je zegd met macro 1 dat de eerste formule iets moet doen en met de tweede macro zeg je ook dat met de 1e formule iets moet worden gedaan.

Verander in de tweede macro Formula1 in Formula2 en dan zul je zien dat het goed gaat.

Jeroen
 
Hi Jeroen,
Helaas, als ik dit verander krijg ik error 499: het argument is niet optioneel.
Eric
 
Geplaatst door eric2001
Helaas, als ik dit verander krijg ik error 499: het argument is niet optioneel.
Dat is logisch.
Maar vertel eens: wil je dat - altijd en overal waar je de cellen op grond van voorw. opmaak blauw maakt - de linker- en rechterranden van diezelfde cellen zwart worden? Of wil je iets anders?
 
Hi fra, dat is ongeveer wat ik wil. Ik wil alleen geen rand om de cellen, maar tussen de kolommen.
Kijk op:
http://www.sparrow.cistron.nl/groepen/groep9/9.4.html
wat ik bedoel. Ik moet dit voor ruim 100 tabellen doen, dus liefst in zo weinig mogelijk handelingen. Nu moet ik die rijen allemaal selecteren en dan kleuren.
Eric
 
Hoi Eric,

Ik heb 'm gevonden:

Niet Formula1 moet je veranderen, maar
... .FormatConditions(1). ....
dat 2x voorkomt in
... .FormatConditions(2). ....

Niet dat de macro's hiermee doen wat jij wil, overigens.

Daarvoor kun je in 1 macro volstaan:
Sub Macro1()
'
' Macro1 Macro
' De macro is opgenomen op 23-3-2004 door J. Zeedijk.
'

'
Range("A1:N35").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(RIJ();2)=0"
With Selection.FormatConditions(1).Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.FormatConditions(1).Borders(xlRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.FormatConditions(1).Borders(xlTop).LineStyle = xlNone
Selection.FormatConditions(1).Borders(xlBottom).LineStyle = xlNone
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(RIJ();2)=1"
With Selection.FormatConditions(2).Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.FormatConditions(2).Borders(xlRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.FormatConditions(2).Borders(xlTop).LineStyle = xlNone
Selection.FormatConditions(2).Borders(xlBottom).LineStyle = xlNone
Selection.FormatConditions(2).Interior.ColorIndex = 37
End Sub


Jeroen
 
Bedankt Jeroen, ik ben alweer iets verder, alleen het werkt niet alleen op de selectie, maar het gaat de goede kant op.
Eric
 
Heb 't Jeroen,
Ik haal: Range("A1:N35").Select weg en het werkt op de selectie. Ik ga nog wat stoeien om er een net kader om te krijgen. Je hebt me een heel eind op weg geholpen. Thnx,
Eric
 
Ervan uitgaande:
- dat je elke cel in de heading volledig omlijnd wil hebben;
- dat een tabel zowel op een even als een oneven rij kan beginnen;
- dat je de macro op 1 tabel tegelijkertijd wil uitvoeren;
selecteer je eerst de tabel (ongeacht waar die zich in het werkblad bevindt), en voer je vervolgens onderstaande macro uit:

Sub Lijn_en_kleur()
'De macro is opgenomen op 23-03-2004 door fra.
Dim x As Integer
With Selection
.Borders(xlLeft).LineStyle = xlContinuous
.Borders(xlRight).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Rows(1).Borders.LineStyle = xlContinuous
For x = 1 To .Rows.Count
If x Mod 2 = 1 Then
.Rows(x).Interior.ColorIndex = 37
End If
Next x
End With
End Sub

fra.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan