Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Kolom verbergen als cel bepaalde waarde krijgt  (gelezen 13747 keer)

0 leden en 1 gast bekijken dit topic.

Offline mischoen

  • Nieuw lid
  • Berichten: 3
  • Geslacht: Man
  • Oplossing.be
Kolom verbergen als cel bepaalde waarde krijgt
« Gepost op: 02 november 2014, 12:09:23 »
Voor een rapport ben ik bezig een macro te verwerken die een kolommen verbergt indien een bepaalde cel een bepaalde waarde krijgt.

Bijvoorbeeld, als cel A1 een waarde heeft van 1 dan kolom B en kolom D verbergen. Maar heeft cel A1 een waarde van 2 dan alleen kolom D verbergen. Bij een waarde van 3 dan kolom B t/m D verbergen.

Ik heb heb de volgende macro van internet kunnen halen en zelf wat geknutseld, maar helaas krijg ik het niet goed werkend. Kan iemand mij helpen  :help:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("A1").Value = 1 Then
        Columns("B").Hidden = True
        Columns("D").Hidden = True
    Else
        Columns("B").Hidden = False
        Columns("D").Hidden = False
    End If
    If Range("A1").Value = 2 Then
        Columns("D").Hidden = True
    Else
        Columns("D").Hidden = False
    End If
    If Range("A1").Value = 1 Then
        Columns("B:D").Hidden = True
    Else
        Columns("B:D").Hidden = False
    End If
End Sub

ps Uiteindelijk zal cel A1 gevuld zijn met een formule die de waarde van de cel bepaald.


Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.279
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #1 Gepost op: 02 november 2014, 12:22:07 »
mischoen, Welkom op dit forum.

Je probleem verhelpen was bij het lezen van het begin van je vraag niet zo moeilijk. TOT ik bij de laatste regel met de 'p.s.' kwam. Dáár zit het échte probleem namelijk. Een formule is géén trigger voor het Change_Event (want het SelectionChange_Event moet je zéker niet gebruiken!!!). Het herberekenen van een cel levert namelijk voor Excel geen verandering op. Da's alléén met het handmatig invoeren.
______________________________

Groet, Leo

Offline mischoen

  • Nieuw lid
  • Berichten: 3
  • Geslacht: Man
  • Oplossing.be
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #2 Gepost op: 02 november 2014, 13:12:34 »
Hoi Leo,

bedankt voor je snelle reactie. Dan zal ik het document aanpassen, zodat de waarde in cel A1 handmatig wordt aangepast. Maar dan nog krijg ik het niet goed werkend. Je gaf aan dat het niet heel moeilijk is om het werkend te krijgen. Zou je me alsnog de juiste richting op kunnen sturen? Alvast bedankt!

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #3 Gepost op: 02 november 2014, 14:05:24 »
Hallo RedHead,

sorry als ik er volledig naast zit... :-[
Ik dacht zo.... Als de waarde in A1 bepaald wordt door een formule, waardoor het Worksheet_Change event niet getriggerd wordt, dan moet er toch ergens een handmatige invoer gebeuren in een andere cel om met de formule een andere waarde in A1 te verkrijgen. Op dat ogenblik (het ingeven van een andere waarde in een cel die gebruikt wordt in de formule in A1, rechtstreeks of onrechtstreeks) krijg je toch een "Change" in je werkblad die wel het Worksheet_Change event start.

Worksheet_Change
Deze gebeurtenis vindt plaats als cellen in het werkblad worden gewijzigd door de gebruiker of via een externe koppeling
Deze gebeurtenis vindt niet plaats als de cellen worden gewijzigd als gevolg van een herberekening. Met de gebeurtenis Calculate kunt u herberekeningen van een blad onderscheppen.

@ mischoen,

ook van mij een welkom op Oplossing.be  :)

Je zou, als je handmatig A1 invult volgende code kunnen gebruiken:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1").Value = 1 Then
        Columns("B:B").Select
    Selection.EntireColumn.Hidden = True
        Columns("D:D").Select
    Selection.EntireColumn.Hidden = True
    Exit Sub
    Else
        Columns("B:B").Select
    Selection.EntireColumn.Hidden = False
        Columns("D:D").Select
    Selection.EntireColumn.Hidden = False
    End If
    If Range("A1").Value = 2 Then
        Columns("D:D").Select
    Selection.EntireColumn.Hidden = True
    Exit Sub
    Else
        Columns("D:D").Select
    Selection.EntireColumn.Hidden = False
    End If
    If Range("A1").Value = 3 Then
        Columns("B:D").Select
    Selection.EntireColumn.Hidden = True
    Else
       Columns("B:D").Select
    Selection.EntireColumn.Hidden = False
    End If
End Sub

Ik ben er echter vast van overtuigd dat dit veel korten kan. Maar dat laat ik aan de specialisten over. Voor mij, ik ben al tevreden als het werkt.

Groeten,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.279
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #4 Gepost op: 02 november 2014, 14:07:12 »
Kan je ons een tabelletje geven met in kolom A het code-getal en in kolom B welke kolommen er dan verborgen moeten worden? Zo praten we in elk geval niet meer langs elkaar heen om tot een goede oplossing te komen.  ;)
______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.279
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #5 Gepost op: 02 november 2014, 14:13:41 »
@SoftAid, dáár heb je (deels) gelijk in. Namelijk zolang je op dezelfde sheet aan 't werk bent, gaat je idee op. Maar als je op een andere sheet werkt waardoor die formule op de doelsheet wordt aangepast, dan dus weer niet. Het gebruik van calculate is een optie. Maar voor al dit soort events geldt dat het altijd wel een belasting is van de resources van je PC.
______________________________

Groet, Leo

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #6 Gepost op: 02 november 2014, 14:17:46 »
Maar voor al dit soort events geldt dat het altijd wel een belasting is van de resources van je PC.
Maar Leo, werk jij nu nog altijd met Windows 95 en 256 Mb Ram  ;D ;D ;D ;D 0:-) ;)

Neen, serieus nu... (een grapje mag al eens, hoop ik... :P)

Als je in Cel A1 een formule zet, bvb  =K1  en je zet in K1 een 1, dan werkt de Worksheet_Change event toch wel. Dus kan je (bijna) eender welke formule gebruiken in A1, of zie ik dat mis? Natuurlijk moeten die waarden in hetzelfde werkblad staan.

groeten,

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.279
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #7 Gepost op: 02 november 2014, 14:33:01 »
@SoftAid, ha ha ha... Tja, een arme "logistiekeling" hè... Hard werken voor weinig!  ;D

Maar wat ik er mee wil zeggen is dat de Events 'Change', SelectionChange' en 'Calculate' volcontinu worden afgevuurd tijdens het werken in je workbook. Je zal er dan in elk geval voor moeten zorgen dat je direct op de eerste regel van je procedure checkt of je wel op de juiste plek zit. Zo niet dan gelijk de procedure uit. Als je dit namelijk niet doet en steeds maar door de procedure moet IF'en, dan zou je bij een grote worksheet wel 'ns flinke vertragingen kunnen gaan krijgen. Zélfs met een grote nieuwe pc...   ;)
______________________________

Groet, Leo

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #8 Gepost op: 02 november 2014, 14:40:16 »
Zo niet dan gelijk de procedure uit.

Daarom had ik in elke If (in de =True) al een Exit Sub gezet . Of was dit onnodig?

Die Calculate laat ik even aan mij voorbijgaan. Ik ben geen Leo, hé...  ;) :)

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.169
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #9 Gepost op: 02 november 2014, 14:50:21 »
RedHead,

ik heb nog even je laatste bericht aandachtig gelezen (soms ga ik er te snel over) en daar heb je natuurlijk een punt.
Het Change-event zit natuurlijk continue te werken als je invoer geeft. Hoe zou jij dit opvangen?

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline mischoen

  • Nieuw lid
  • Berichten: 3
  • Geslacht: Man
  • Oplossing.be
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #10 Gepost op: 02 november 2014, 15:35:36 »
Heren,

bedankt, ik ben in ieder geval op weg geholpen. Elk voordeel heeft zijn nadeel  ::)

Het is me gelukt om de macro werkend te krijgen, maar idd is het werkblad continue aan het berekenen.

In ieder geval bedankt voor jullie uitleg en oplossingen  ;D

Groet,
mischoen

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Kolom verbergen als cel bepaalde waarde krijgt
« Reactie #11 Gepost op: 02 november 2014, 17:04:01 »
Hallo,

Ik ben ook geen Leo, en evenmin een specialist  ;) , maar zou een hulpcel (ik heb hier willekeurig E1 gekozen) er niet kunnen voor zorgen dat er enkel als A1 wijzigt actie wordt ondernomen, uiteraard op één vergelijking en een exit na.
Dus iets als :
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1").Value = Range("E1").Value Then
        Exit Sub
    Else
        Range("E1").Value = Range("A1").Value
        Select Case Range("A1").Value
            Case 1
                Range(Columns("B"), Columns("D")).EntireColumn.Hidden = True
                Columns("C").EntireColumn.Hidden = False
            Case 2
                Columns("D").EntireColumn.Hidden = True
                Columns("B:C").EntireColumn.Hidden = False
            Case 3
                Columns("B:D").EntireColumn.Hidden = True
            Case Else
                Columns("B:D").EntireColumn.Hidden = False
        End Select
    End If
End Sub

Mvg,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

 


www.combell.com