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

Randen aangeven voor een bereik

Status
Niet open voor verdere reacties.

japio86

Gebruiker
Lid geworden
1 okt 2009
Berichten
61
Goedendag,

Even een kort vraagje:
Doormiddel van VBA wil ik een rand aangeven om de cellen die gevuld zijn.
Het aantal cellen dat gevuld is verandert en dus heb ik een code geschreven die controleert tot welke cel gevuld is.
Nu zoek ik alleen nog een code die alleen de kolomen a tot e een rand geeft en
niet een gehele rij of maar 1 kolom.

Code:
Sub randen()
Dim rand As String

rand = 1

Do Until IsEmpty(Sheet5.Cells(rand, 1))
    With Sheet5.Range("A:E")
        .BorderAround , Weight:=xlMedium
        .Borders(xlInsideVertical).Weight = xlThin
        .Borders(xlInsideHorizontal).Weight = xlThin
        .Interior.ColorIndex = xlNone
    End With
    rand = rand + 1
    Loop
End Sub

Met deze code geeft hij de gehele kolom een rand ( dus tot rij 65536) en dat is dus niet wat ik zoek tot de rij die gevuld is.

Iemand een snelle simpele oplossing?
 
Zo zou het moeten lukken.

Code:
Sub randen()
Dim rand As String
Application.ScreenUpdating = False
Lrand = 1
Krand = 1
Do Until IsEmpty(Blad1.Cells(Val(Lrand), Val(Krand)))
    With Blad1.Range("A" & Lrand & ":E" & Krand)
        .BorderAround , Weight:=xlMedium
        .Borders(xlInsideVertical).Weight = xlThin
        '.Borders(xlInsideHorizontal).Weight = xlThin
        .Interior.ColorIndex = xlNone
    End With
    Lrand = Lrand + 1
    If Lrand = 5 Then Krand = Krand + 1
    Loop
End Sub

Suc6, Cobbe
 
Bedankt Cobbe, het werkt uitstekend.

Nog 2 vraagjes:
Waarom zet je de ScreenUpdating uit?

En hoe kan ik van een heel werkblad alle randen verwijderen.
Ik wil het namelijk elke keer opnieuw laten uitvoeren als er op een bepaalde knop wordt gedrukt.

Gr, Jaap
 
Aangepast:

Code:
Sub randen()

Application.ScreenUpdating = False
   Cells.Select
           Selection.Borders.LineStyle = xlNone
   ActiveSheet.UsedRange.Select
            Selection.Borders.LineStyle = xlContinuous
Application.ScreenUpdating = True

End Sub

Application.ScreenUpdating = False -- dient om het schermflikkeren te onderdrukken.

Cobbe
 
Laatst bewerkt:
Waarom moet dit met een lus worden afgehandeld? Is dit niet een stuk simpeler...
Code:
Sub ff()
    
    Sheets(5).Columns("A:E").Borders.LineStyle = xlLineStyleNone
    
    With Sheets(5).Range(Cells(1, 1), Cells(Rows.Count, "E").End(xlUp).Address)
        .BorderAround , Weight:=xlMedium
        .Borders(xlInsideVertical).Weight = xlThin
        .Borders(xlInsideHorizontal).Weight = xlThin
        .Interior.ColorIndex = xlNone
    End With

End Sub
...maar het kan natuurlijk ook zijn dat ik iets over het hoofd zie. ;)

Groet, Leo
 
Cobbe,

Nog een vraag:)
Het komt een aantal keer voor in mijn bestand dat er geen waarde in kolom E staat.
Ik heb gemerkt aan de door jou aangeleverde code dat er dan niet om alle rijen een rand komt te staan.
Hoe kan ik de code aanpassen dat zolang er in een cel in kolom A een waarde staat dat er om de cellen (A:E) van die rij een rand komt.

Ik hoop dat je begrijpt wat ik bedoel

Gr, Jaap
 
Leo,

Op de door jou aangeleverde code krijg ik een foutmelding op de volgende regel

Code:
With Sheets(5).Range(Cells(1, 1), Cells(Rows.Count, "E").End(xlUp).Address)

Error 1004

Enig idee waar dit aan kan liggen?

Gr, Jaap
 
Enig idee waar dit aan kan liggen?
Ik heb met 'Sheets(5)' verwezen naar de 5e sheet in je workbook (dat gokte ik aan de hand van jouw code). Je kan die 5 dus aanpassen naar het sheet-indexnummer van jouw sheet (index = gewoon vanaf links de tabs gaan tellen en je weet welk indexnummer je moet gebruiken).

Groet, Leo
 
Aangepast Leo en nu werkt het wel.
Helaas let ook deze code op kolom E, hoe is dit aan te passen naar kolom A?

Jaap
 
hoe is dit aan te passen naar kolom A?

Code:
Sub ff()
    
    Sheets(5).Columns("A:E").Borders.LineStyle = xlLineStyleNone
    
    With Sheets(5)
        With .Range("A1:E" & .Cells(.Rows.Count, "A").End(xlUp).Row)
            .BorderAround , Weight:=xlMedium
            .Borders(xlInsideVertical).Weight = xlThin
            .Borders(xlInsideHorizontal).Weight = xlThin
            .Interior.ColorIndex = xlNone
        End With
    End With

End Sub

Groet, Leo
 
Leo,
Ik was te gehaast met mijn vraag stellen! Ik ben er namelijk zelf al achter gekomen! Toch bedankt voor je snelle reactie en oplossing!

Jaap
 
Beste japio86 ;)

Kan je je oplossing hier dan plaatsen zodat andere gebruikers hier ook iets aan hebben aub.

Groetjes Danny. :thumb:
 
Ik heb er sowieso aangerommeld.
Volgende week ga ik er mee verder, dan zal ik even de oplossing posten.

Gr, Jaap
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan