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

Kolom zichtbaar maken na actie!

Status
Niet open voor verdere reacties.

andriesluchies

Gebruiker
Lid geworden
30 okt 2009
Berichten
41
Ongetwijfeld zal mijn probleem wel aangekaart zijn in andere topics maar aangezien ik niet zo thuis ben in het excel-lingo bij deze mijn vraag en bij voorbaat mijn excuses indien deze als eens gesteld is:

Opzet: ik zoek een methode om in een tabblad het verschijnen van een bepaalde kolom of meerdere kolommen afhankelijk te maken van invulling van een andere kolom. (zeg maar kolommen B en C verschijnen wanneer ergens in kolom A een cel ingevuld wordt). Nu zal dit wel via VBA moeten maar daar heb ik helaas nog niet veel kaas van gegeten; wellicht dat iemand mij een voorzetje kan geven.

Bvd
 
Alleen als er niets is ingevuld in de A-kolom, zijn de kolommen B en C verborgen.
Zodra er dus iets wordt ingevuld in de A-kolom, worden de kolommen B en C zichtbaar.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Laatst bewerkt:
Ahh, nou zie ik ook wat ik fout deed om dit op te lossen.

Ik deed het andersom, maar dan geraak je in een loop :)

THX
 
Ahh, nou zie ik ook wat ik fout deed om dit op te lossen.

Ik deed het andersom, maar dan geraak je in een loop :)

THX

Hoe bedoel je andersom?
Ik ben eerlijk gezegd wel nieuwsgierig geworden.:)

Met vriendelijke groet,


Roncancio
 
@Roncancio
Alleen als er niets is ingevuld in de A-kolom, zijn de kolommen B en C zichtbaar.
Zodra er dus iets wordt ingevuld in de A-kolom, worden de kolommen B en C verborgen.
Ik denk dat deze jouw voorbeeld beter illustreerd
Alleen als er niets is ingevuld in de A-kolom, zijn de kolommen B en C verborgen.
Zodra er dus iets wordt ingevuld in de A-kolom, worden de kolommen B en C zichtbaar.
Of speelt het late uur mij parten:o:D
 
@WarmBakkertje
Integendeel.
Je hebt helemaal gelijk. Het tijdstip speelt mij parten.
Bedankt voor de correctie.

@Revdutchie
Een paar dingen.
1. gebruik geen .Select and Selection. Hierdoor worden de betrokken kolommen geselecteerd en dat is niet nodig. In een grote macro werkt dit nogal vertragend.
2. In plaats van Selection_Change kan je beter Change gebruiken omdat als je een andere cel selecteert, deze macro steeds opnieuw wordt gestart.
3. Merk dat de code niet loopt als je een "x" invoert ipv "X".
Dit kan je als volgt oplossen:
Code:
If UCase([A1]) = "X" Then
Ook al wordt er een "x" geschreven, de Ucase maakt er een hoofdletter van en vergelijk het met "X".

Met vriendelijke groet,


Roncancio
 
Warme bakkertje, je hebt gelijk, maar nog iets,

Moet dit niet in 2 delen ? dan bedoel ik

on workbook open als leeg hidden

en bij worksheet als niet leeg show ?

Want nu staat het wel op hidden als A leeg is maar dan moet ik eerst een cel vullen en dan weer leeg maken.

Groeten,
Jacques
 
@WarmBakkertje
Integendeel.
Je hebt helemaal gelijk. Het tijdstip speelt mij parten.
Bedankt voor de correctie.

@Revdutchie
Een paar dingen.
1. gebruik geen .Select and Selection. Hierdoor worden de betrokken kolommen geselecteerd en dat is niet nodig. In een grote macro werkt dit nogal vertragend.
2. In plaats van Selection_Change kan je beter Change gebruiken omdat als je een andere cel selecteert, deze macro steeds opnieuw wordt gestart.
3. Merk dat de code niet loopt als je een "x" invoert ipv "X".
Dit kan je als volgt oplossen:
Code:
If UCase([A1]) = "X" Then
Ook al wordt er een "x" geschreven, de Ucase maakt er een hoofdletter van en vergelijk het met "X".

Met vriendelijke groet,


Roncancio

OK, SUPER, hier kan ik weer wat mee, die X of x overigens was allen voor TS bedoelt waarmee ik bedoelde een of andere waarde :-)

Groeten,
Jacques
 
Laatst bewerkt:
@Revdutchie:
We gaan er hier van uit (zoals ik de uitleg van TS begrijp) dat de kolommen verborgen zijn als het bestand geopend wordt en dat na een actie de kolommen zichtbaar moeten worden. Ze zullen dan ook wel leeg zijn(dus verborgen) bij het afsluiten v/h bestand.
Wat betreft jouw code zal je (zoals Roncancio al aangaf) op dit forum nog tot in den treure lezen om .Select, .Selection, .Activate te vermijden. Maak dan liever gebruik van With...End With lussen of laat het er gewoon tussenuit
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If UCase([A1]) = "X" Then
        Columns("B:G").EntireColumn.Hidden = False
    Else
        Columns("B:G").EntireColumn.Hidden = True
    End If
End Sub
Verkorte versie
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Columns("B:G").EntireColumn.Hidden = IIf(UCase([A1]) = "X", False, True)
End Sub
 
Laatst bewerkt:
Zo moet het dus neem ik aan (waarbij X een waarde is die nog gedefinieerd moet worden)

Groeten,
Jacques
 

Bijlagen

Nog kortere verkorte versie::p
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Columns("B:G").EntireColumn.Hidden = UCase([A1]) = "X"
End Sub

Met vriendelijke groet,


Roncancio
 
Rudi,

Ja, maar dat With en End with heb ik nog niet helemaal (helemaal niet) onder de knie.
De code die ik poste kwam uit de macro recorder, die gebruik ik als ik het niet weet, maar heb al door dat ik die beter niet kan gebruiken.

Trouwens onwijs bedankt voor je opmerkingen, ik ben er blij mee, zeker in deze leer fase word ik graag op me fouten gewezen.

Groeten,
Jacques
 
Zo moet het dus neem ik aan (waarbij X een waarde is die nog gedefinieerd moet worden)

Groeten,
Jacques

Dat kan, maar het definiëren hoeft niet omdat het geen variabele is maar tekst van een cel.

Met vriendelijke groet,


Roncancio
 
@Revdutchie:
We gaan er hier van uit (zoals ik de uitleg van TS begrijp) dat de kolommen verborgen zijn als het bestand geopend wordt en dat na een actie de kolommen zichtbaar moeten worden. Ze zullen dan ook wel leeg zijn(dus verborgen) bij het afsluiten v/h bestand.
]

Ut ohhhhh, mag ik nu eigenwijs wezen, zelfs als ik het bestand opsla en daarna weer open zijn de kolommen zichtbaar. TS zal dus eerst er iets in moeten zetten en dan verwijderen en dan pas opslaan eer ze verborgen zijn.

Groeten,
Jacques
 
De code die ik poste kwam uit de macro recorder, die gebruik ik als ik het niet weet, maar heb al door dat ik die beter niet kan gebruiken.
Het gebruik van de macrorecorder is op zich geen slecht idee, omdat je zo kan zien welke methoden of functies Excel gebruikt bij bepaalde handelingen(zeer handig als je iets niet weet of zoekt, gebruik het zelf ook nog wel eens). Het enige probleem is, is dat de recorder ook daadwerkelijk elke stap opneemt die genomen wordt. Het is dus een zaak om dit daarna op te kuisen zodat de overbodige statements eruit gehaald worden

Edit: Als de kolommen verborgen zijn bij het afsluiten, zijn ze toch ook verborgen bij het openen!
 
Laatst bewerkt:
Dat kan, maar het definiëren hoeft niet omdat het geen variabele is maar tekst van een cel.

Met vriendelijke groet,


Roncancio

Met definieeren bedoel ik dat TS nog moet bepalen wat daar moet komen,net als de X als in windows 3.X versie 1.X etc :)

Groeten,
Jacques
 
Stel dat je cel A1 een zwarte achtergrond wilt geven en rode letters.
In plaats dat je zegt:
Code:
Range("A1").Select
Selection.Font.Color = vbRed
Selection.Interior.Color = vbBlack

Het grote nadeel is dat Range("A1") geselecteerd wordt terwijl dat niet nodig is.
Bij een groot programma werkt dit al gauw zeer vertragend.

Beter is om dat te zeggen:
Code:
With Range("A1")
     .Font.Color = vbRed
     .Interior.Color = vbBlack
End With

Range("A1") krijgt nog steeds de betreffende kleuren maar hoeft niet daarvoor geselecteerd te worden.

Met vriendelijke groet,


Roncancio
 
Stel dat je cel A1 een zwarte achtergrond wilt geven en rode letters.
In plaats dat je zegt:
Code:
Range("A1").Select
Selection.Font.Color = vbRed
Selection.Interior.Color = vbBlack

Het grote nadeel is dat Range("A1") geselecteerd wordt terwijl dat niet nodig is.
Bij een groot programma werkt dit al gauw zeer vertragend.

Beter is om dat te zeggen:
Code:
With Range("A1")
     .Font.Color = vbRed
     .Interior.Color = vbBlack
End With

Range("A1") krijgt nog steeds de betreffende kleuren maar hoeft niet daarvoor geselecteerd te worden.

Met vriendelijke groet,


Roncancio

Weet je wat het is, ik denk te letterlijk, ik moet gewoon het statement "With" weglaten in me gedachten, want ik denk steeds "Met". Zonder With staat er in gedachtevorm gewoon wat het moet wezen.
 
Weet je wat het is, ik denk te letterlijk, ik moet gewoon het statement "With" weglaten in me gedachten, want ik denk steeds "Met". Zonder With staat er in gedachtevorm gewoon wat het moet wezen.

Zie het meer als "wat betreft"

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan