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

Plaatsen borders met minder code

Status
Niet open voor verdere reacties.

EdjeVis

Gebruiker
Lid geworden
22 nov 2006
Berichten
99
Kan iemand mij vertellen of het mogelijk om mbv minder VBA-code randen om een bereik te krijgen?
Standaard krijg je vanuit de macro-recorder iets als :
Code:
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With

Maar kan dit niet met iets als :
Code:
With Selection.Borders(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight, xlInsideVertical,xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
End With

Is volgens mij nét iets overzichtelijker, maar krijg nu een foutmelding. Moet dit écht allemaal helemaal apart per border?

Bij voorbaat dank voor je moeite!
 
Code:
With Selection.Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
End With

With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
End With

With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
End With

verder kom ik ook niet.

ps.
Als je alles toch Standaard houdt dan kunnen de onderste twee with eruit.
Code:
With Selection.Borders
        .LineStyle = xlContinuous
End With

Volgens mij zijn deze twee ook standaard ingesteld.
.Weight = xlThin
.ColorIndex = xlAutomatic
 
Laatst bewerkt:
Da's in ieder geval al een stuk korter!
Dank hiervoor.

Nog eventjes kijken of iemand het toch nog korter kan.
 
Ligt eraan wat je precies wil laten zien?

Code:
Selection.Borders.LineStyle = xlContinuous
is al voldoende voor jouw code.

ps,
heb mijn eerdere post iets aangepast.
 
begrijp ik, maar als ik ooit (je weet maar niet waarom) een andere lijndikte als default instel, blijft dit dunne lijntje nu wel goed staan, daar heb ik dus geen probleem mee. Het gaat mij meer om het apart opsommen van de lijnen.
Met het weglaten van de "edge"-lijnen, wordt dat al terug gebracht van 4 naar 1, maar ik ben benieuwd of ook de "interne"-lijnen in die eerste aansturing kunnen worden meegenomen.
 
uh, sorry wigi, maar ik geloof niet dat ik 'm helemaal begrijp.
Je bedoelt dat het niet korter kan?
Er is geen mogelijkheid om eea in één "with"-regel aan te sturen, met daaronder de "parameters" voor die regels?
 
Zo?

Code:
With Selection.Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
End With
 
Komen we terug op post #2:
Code:
With Selection.Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
End With

With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
End With

With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
End With

Waarin je lijnen in het algemene kader dikker zijn.
Korter krijg ik het niet. Je kan alleen de buiten lijnen aangeven met Selection.Borders
voor de andere moet je hierachter nog aangeven welke lijn je wilt veranderen.
Maar als het anders kan hoor ik het graag :)
 
nou, nee, sorry voor mijn onduidelijkheid.
bovenaan de post gaf ik aan dat ik via de macro-recorder allemaal verschillende blokjes per lijn kreeg. Eerst regels voor de diagonale lijnen, daarna voor de omlijnen, daarna voor de interne lijnen. Nu zijn de 4 brokjes van de omlijnen te vervangen door één brokje, door daar alleen ".borders" neer te zetten (zonder "xlEdge...."). Maar kan ik niet (zoals mijn vraag helemaal boven begon, bijv. dmv een komma of puntkomma al die dingen in één with-regel zetten en dan met de drie regels daaronder aangeven dat ik voor al die dingen een dun lijntje wil hebben?
 
Neen, je moet die apart behandelen volgens mij, zoals in de code van Demeter in het begin.
 
oké, het zij zo.
de winst is al behoorlijk door alle 4 de edge-lijnen tegelijk te pakken door de specificatie weg te laten.
Bedankt beiden!
 
Je zou ook kunnen werken met BorderAround functie.
Deze doet alleen de randen van je selectie.
Zie VBA-help voor meer info.

Code:
Sub borders()

With Selection.borders
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
End With

Selection.BorderAround LineStyle:=xlDash, ColorIndex:=3, Weight:=xlThick

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan