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

Kolombreedte automatisch instellen op basis van celwaarde

Status
Niet open voor verdere reacties.

Greenmean

Nieuwe gebruiker
Lid geworden
30 aug 2012
Berichten
2
Ik wil met behulp van VBA de kolombreedte van een bepaalde kolom instellen op basis van een variable waarde in een cel.

Bijvoorbeeld:
Waarde van cel B2 is bijv. 50
Breedte van kolom L moet dan 50 worden (of welke waarde dan ook ik B2 staat).

Idem voor de rijhoogte.

Wie helpt mij?
 
Neem eens een macro op met de macrorecorder en kijk wat dat voor resultaat oplevert.
Je zult dan zien dat je minstens een omrekening moet maken voor de breedte aanduiding en vervolgens zou je door het uitvoeren van die macro de betreffende breedte kunnen realiseren.
Bedenk echter wel dat er in een kolom slechts één celbreedte (= kolombreedte) kan voorkomen. Idem voor Celhoogte/rijhoogte.
 
Macro opnemen met kopieren celwaarde en plakken als kolombreedte dan krijg ik zoiets:

Code:
Range("B2").Select
    Selection.Copy
    Columns("L:L").Select
    Selection.ColumnWidth = 50

Laatste veranderen in:

Code:
 Selection.ColumnWidth = Range("B2")

Het werkt, bedankt!
 
Laatst bewerkt door een moderator:
Of zo:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Range("B2:B3")) Is Nothing Then Exit Sub
   Columns("F:F").ColumnWidth = Cells(2, 2)
     Rows("8:8").RowHeight = Cells(3, 2)
End Sub

Niet als module maar als Blad-event, dus achter het blad hangen.
 
Er moet nog een On Error Resume Next bij, als je bij 1 een verkeerde waarde invoert
 
Ik heb de code ietsje aangepast... afgezien van het verschil in bereik en de 'On Error Resume Next' heb ik ook toegevoegd dat je kan ingeven welke kolom en rij er moeten veranderen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Range("G2:H3")) Is Nothing Then Exit Sub
kolom = Range("G2")
rij = Range("G3")
On Error Resume Next
   Columns(kolom & ":" & kolom).ColumnWidth = Cells(2, 8)
     Rows(rij & ":" & rij).RowHeight = Cells(3, 8)
End Sub

Of zie bestandje:
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan