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

excel kolombreedte automatisch aanpassen

Status
Niet open voor verdere reacties.

hoogendijk

Gebruiker
Lid geworden
21 dec 2010
Berichten
39
Ik ben bezig om een jaarplanning te maken waarin kolommen zich automatisch aanpassen adhv tekst ma, di, wo, etc. in een cel.
Het is mij gelukt om de kolommen te laten kleuren, maar de breedte wijzigen op het zelfde moment krijg ik niet voor elkaar.
Ik wil geen Macro's if iets dergelijks gebruiken.

Kan iemand mij hierbij helpen.

Ik heb een voorbeeld bestandje bijgevoegd.
Alvast hartelijk dank.

vriendelijke groet,
Ewoud
 

Bijlagen

Dat gaat helaas niet zonder macrocode.
 
Dat is ook wat ik lees op internet. Kijk even naar deze.
 
Beste Harry en Senso,

Dank jullie wel voor de reactie.
Jammer dat er toch met een macro moet worden gewerkt, hier moet ik over nadenken hoe en wat ik wil.
Ik heb geen idee van het schrijven van en zou de handelingen dan opnemen.
Het lijkt mij lastig omdat de za, zo en ma verspringen per kalenderjaar, dan moet je volgens mij ook weer de macro aanpassen.
Of heeft een van jullie een goed idee?

vriendelijke groet,

Ewoud
 
Op basis van die paar kolommen.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim j As Long
Application.ScreenUpdating = False
 If Target.Address(0, 0) = "E3" Then
   Range("g1:u1").EntireColumn.AutoFit
     For j = 7 To 21
      If InStr("zazoma", Cells(5, j)) Then Columns(j).ColumnWidth = 0.5
     Next j
 End If
End Sub


Zijn het er veel meer dan kun je altijd nog deze gebruiken.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim j As Long, s0 As String
 If Target.Address(0, 0) = "E3" Then
   Range("g1:u1").EntireColumn.AutoFit
     For j = 7 To 21
      If InStr("zazoma", Cells(5, j)) Then s0 = s0 & "," & Cells(1, j).Address(0, 0)
     Next j
   If s0 <> "" Then Range(Mid(s0, 2)).ColumnWidth = 0.5
 End If
End Sub

Code plaatsten in module van het blad.
 
Het kan wel zonder VBA als je de za zo en ma kolommen gewoon weglaat of "samenvoegt" tot 1 kolom..

In de kolomkoppen gebruik ik dan een echte datum, in mijn voorbeelden wordt alleen de dag getoond,
in voorbeeld alleen zaterdag word mbv de weekdagfunctie berekend welke dag het is en wordt op zo en ma een extra dagen bij de datum op geteld om op de eerstvolgende dinsdag te komen. za wordt wel getoond als weekeinde markering en "samenvatting" van de 3 weekenddagen, eventueel zou je de omschrijving za nog kunnen aanpassen om weekendsluiting aan te duiden..
in voorbeeld geen weekend word op za zo en ma extra dagen bijgeteld waardoor de planning meteen naar de eerstvolgende dinsdag springt..

zie bijlage voor de uitwerking.
 

Bijlagen

Laatst bewerkt:
Het kan zonder macro met een standaard mogelijkheid van van excel.
  1. Klik linksboven (links naast de kolomkoppen en boven de rijkoppen) het blokje met het driehoekje, om alle kolommen en rijen te selecteren;
  2. Zweef met de muis boven de kolomkoppen;
  3. En dubbel-klik wanneer de muisaanwijzer een streep met twee pijltjes is;
  4. Alle kolommen krijgen dan de automatische breedte gebaseerde op de inhoud.
Het is een beetje een combinatie van de tips in deze link, zie https://www.solveyourtech.com/autofit-columns-excel-2013/

Tip: je kan bijvoorbeeld in de eerste regel de gewenste kolombreedte vastleggen met een aantal spaties (3 of 4 voor de dagen)
 
Laatst bewerkt:
Beste Roel,

In het voorbeeld zie ik niet wat ik zou willen.
De kolom moet smaller worden wanneer in een cel, op bv rij 3, "za", "zo", of "ma" staat.
Ik zie wel dat kolommen grijs worden zelfs over een groter bereik bv di, wo, do, vr ook, dit afhankelijk wanneer de startdatum is gezet.
Bovendien wil ik wel de drie dagen in de planning hebben staan.
Wel hartelijk dank dat je in mijn vraag bent gedoken.

met vriendelijke groet,

Ewoud
 
Beste Alphamax,

De verandering van kolombreedte moet afhankelijk zijn van de tekst en niet van de tekstlengte.
Dus helaas niet helemaal de oplossing die ik zou willen.
Was het maar zo makkelijk.
In ieder geval bedankt voor het meedenken.

met vriendelijke groet,

Ewoud
 
Vraag me af of je die van HSV dan geprobeerd hebt.

If InStr("zazoma", Cells(5, j)) Then Columns(j).ColumnWidth = 0.5

Daar staat toch za zo ma en 0.5 breedte. Niks tekst en tekstlengte. Werkt of werkt niet!
 
Die heb ik geprobeerd,
Ik heb een toets combinatie CTRL+SHIFT+b gemaakt en wanneer ik dit uitvoer gebeurt er niets.
Moet je niet in een bepaalde cel staan wanneer de macro wilt uitvoeren?
 
Die toetscombinatie ken ik niet. Macro uitvoeren zit gewoon onder tabblad Ontwikkelaars > Macro's en daar kun je die uitvoeren. Ook kun je de macro aan het lint toevoegen. Onder macro's en opzoeken en naar rechts plaatsen.
 
De toetscombinatie kan je toewijzen in het macrovenster onder opties, dan hoef je niet 'macro's'te openen om uit te voeren.
Maar ook met "uitvoeren" in het macro venster lukt het niet.
 
Als je cel E3 wijzigt gaat het allemaal automatisch.
 
Beste HSV,

Ik zie alleen de kolommen verplaatsen zoals het al was, er wordt niets smaller.
Ik voeg het excelsheet voor de duidelijkheid even bij.
 

Bijlagen

De code staat niet in de bladmodule van toepassing maar in een standaard module.
 
maakt het uit in welke office je werkt? ik heb 2010
ik weet ook niet hoe je in de bladmodule komt.
 
Nee, versie maakt niet uit.

Dubbelklik op Blad1(JAARPLANtest) waar ook je module1 staat (VB-editor).
Plaats de code daar in het grote witte vlak.
 
Nou he he. ik heb het voor elkaar dankzij jou.
Heel hartelijk bedankt en ik heb nog wat geleerd ook.
Top.
Fijne feestdagen
 
Beste mensen,

Ik ben er weer verder gegaan en zie toch nog een paar onvolkomenheden.
1- De macro kan niet het gehele jaar verwerken de versmalling stopt in april, ook als ik de betreffende regel in de macro aanpas naar 159.
Hoger kan ik dit getal niet maken want dan krijg ik een error 1004 wanneer ik in cel E2 de bijtelling van de startdatum wijzig.

2- Wanner ik de bijtelling van de startdatum wijzig komen de zazoma in andere kolommen terecht wat goed is, echter de inhoud van de onderstaande cellen in de desbetreffende kolom schuift niet mee.
Zo dat bijvoorbeeld een afspraak op 16 januari komt dan op 20 januari wanneer ik in cel E2 4 dagen bij de startdatum tel.

Hopelijk is er een oplossing.
Ik heb het bestand zoals ik het ga gebruiken bij gevoegd.

Alvast hartelijk bedankt
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan