Avatar billede Klaus W Guru
28. august 2018 - 12:53 Der er 6 kommentarer og
1 løsning

kanter omkring celler

Jeg har før spurgt indtil hjælp med at lave kanter, og det lykkes, nu har jeg så tænkt at det skal være i VBA og kanterne skal slutte ved den sidste synlige tekst, resten af arket er der en gemt formel på. Så det er kun teksten der skal indrammes.
Jeg bruge denne lille VBA kode, den tager desværre også formlen med og indrammer den. Nogle der kan hjælpe så kanterne slutter ved den sidste synlige tekst.

På forhånd tak
KW
Formlen ser sådan ud

Sub rangeBorders()
'
'kanter om celler
'

With Range(Range("A3"), Range("A3").End(xlToRight).End(xlDown)).Borders

    .LineStyle = xlContinuous
    .Color = 3
   
    .Weight = xlThin

End With

End Sub
Avatar billede Jan Hansen Ekspert
28. august 2018 - 13:21 #1
Mon ikke noget ala?

Dim rArea as Range, rBegin as Range, rEnd As Range, rCell as Range

Sub rangeBorders()

Set rBegin=Range("A3")
Set rArea=Range(Range("A3"), Range("A3").End(xlToRight).End(xlDown))

For Each rCell in rArea
        if not rCel="" then set rEnd=rCell
Next

set rArea=Range(rBegin,rEnd)

With rArea.Borders

    .LineStyle = xlContinuous
    .Color = 3
   
    .Weight = xlThin

End With

End Sub


Jan
Avatar billede Klaus W Guru
28. august 2018 - 15:52 #2
Hej Jan
Jeg for en fejl i linien
set rArea=Range(rBegin,rEnd)
Hvorfor

KW
Avatar billede Jan Hansen Ekspert
28. august 2018 - 16:13 #3
Prøv denne der var en i " if not rCel="" then set rEnd=rCell" som skulle have været  if not rCell="" then set rEnd=rCell


Option Explicit

Dim rArea As Range, rBegin As Range, rEnd As Range, rCell As Range

Sub rangeBorders()

Set rBegin = Range("A3")
Set rArea = Range(Range("A3"), Range("A3").End(xlToRight).End(xlDown))

For Each rCell In rArea
        If Not rCell = "" Then Set rEnd = rCell
Next

Set rArea = Range(rBegin, rEnd)

With rArea.Borders

    .LineStyle = xlContinuous
    .Color = 3
   
    .Weight = xlThin

End With

End Sub
Avatar billede Jan Hansen Ekspert
28. august 2018 - 16:25 #4
Det er altid en god ting at have denne linje med:
Option Explicit
Den gør at hvis man fejl navngiver en variabel så bliver det fanget:

Det jeg har gjort er
områdevariabel (rArea)
Cellevariable (rBegin,rEnd,rCell)

Først tager jeg og sætter din begyndelses celle, derefter dit område med indhold.
Nu tester jeg alle celler i området om der er indhold (not rCell="") og hvis der er indhold sættes slutcellen til denne celle
Så ny sætter jeg området til mellem begyndelsescellen og slutcellen.

Jan
Avatar billede Klaus W Guru
28. august 2018 - 16:30 #5
Hej Jan jeg har sendt dig en privat besked håber på lidt hjælp den vej, det har jeg forklaret mig lidt tydeligere

KW
Avatar billede Jan Hansen Ekspert
28. august 2018 - 17:14 #6
Prøv om denne ikke virker efter hensigten:


Option Explicit

Dim rArea As Range, rBegin As Range, rEnd As Range, rCell As Range

Sub rangeBorders()

Set rBegin = Range("A3")
Set rArea = Range(Range("A3"), Range("A3").End(xlToRight).End(xlDown))

For Each rCell In rArea
    If rCell = "" Then Exit For
    If Not rCell = "" Then Set rEnd = rCell
Next

Set rArea = Range(rBegin, rEnd)

With rArea.Borders

    .LineStyle = xlContinuous
    .Color = 3
 
    .Weight = xlThin

End With

End Sub


Jan
Avatar billede Klaus W Guru
28. august 2018 - 17:19 #7
Hej Jan det fungere 1000 tak fedt
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester