Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VBA] Kolom verbergen als cel bepaalde waarde krijgt

Pagina: 1
Acties:

  • bart1074
  • Registratie: September 2003
  • Laatst online: 27-03-2024
Voor een rapport ben ik bezig een macro te verwerken die een kolom met sparklines verbergt indien een bepaalde cel de waarde 13 krijgt. Echter deze cel (C2) is de cell-link van een combo box.

Nou ben ik via google al tot de volgende vba gekomen. Maar werkt dit niet omdat cel C2 dus dynamisch is en niet een waarde is maar een formule. Als ik in deze cel namelijk gewoon 13 typ verdwijnt de kolom wel. Hoe krijg ik de macro nou zo ver, dat de kolom automatisch verdwijnt als de combo box de waarde 13 in deze cel plakt. Hopelijk kunnen jullie helpen. Vast bedankt.


code:
1
2
3
4
5
6
7
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("C2").Value = 13 Then
        Columns("Q").EntireColumn.Hidden = True
    Else
        Columns("Q").EntireColumn.Hidden = False
    End If
End Sub

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Doet die combobox (accepteert standaard strings) wel een conversie naar int voordat het in de cel geplakt wordt? Of moet je simpelweg gewoon controleren op een string met een waarde van 13?

  • bart1074
  • Registratie: September 2003
  • Laatst online: 27-03-2024
Gomez12 schreef op maandag 16 september 2013 @ 20:06:
Doet die combobox (accepteert standaard strings) wel een conversie naar int voordat het in de cel geplakt wordt? Of moet je simpelweg gewoon controleren op een string met een waarde van 13?
Die combobox plaatst gewoon een nummer in de cell-link toch? Afhankelijk van de geselecteerde waarde in de combobox. Dus als ik de derde waarde in de lijst kies, geeft de cel waarde 3 en als ik de 13e waarde in de lijst kies geeft de cell link het getal 13 toch. Volgens mij pakt die macro dus alleen waardes die ik intyp (integers?) terwijl de combobox een ander formaat publiceert..

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
En als je in vba nu gewoon eens een debugwatch zet op die waarde? Wat zegt de debugger dan?

  • bart1074
  • Registratie: September 2003
  • Laatst online: 27-03-2024
Gomez12 schreef op maandag 16 september 2013 @ 20:48:
En als je in vba nu gewoon eens een debugwatch zet op die waarde? Wat zegt de debugger dan?
Ik weet niet goed hoe ik het moet gebruiken, maar laat ik het anders formuleren. Als ik de geplaatste VBA aanpas en verwijs naar bijvoorbeeld cell B4 en hier handmatig cijfers in zet, dan werkt het wel. Bij het cijfer 13 verdwijnt kolom Q en bij alle andere waarden blijft de kolom zichtbaar.

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Kan je de sheet anders eens dm'en oid dan kijk ik er wel even naar. Want ik weet niets van cell-links van combo-boxen. Maar als er iets in die c2 staat dan moet je dat gewoon kunnen debuggen en comparen.

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Rechts klikken op die combo box, dan "assign macro..." om een macro toe te voegen. Alternatief kun je in plaats van een dropdown control een data validation - list met in-cell dropdown gebruiken, dan gaat Worksheet_Change wel gewoon af.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • bart1074
  • Registratie: September 2003
  • Laatst online: 27-03-2024
pedorus schreef op maandag 16 september 2013 @ 21:43:
Rechts klikken op die combo box, dan "assign macro..." om een macro toe te voegen. Alternatief kun je in plaats van een dropdown control een data validation - list met in-cell dropdown gebruiken, dan gaat Worksheet_Change wel gewoon af.
Maar als ik een macro direct aan de combo box wil hangen, moet ik m'n vba aanpassen toch? Ben er niet zo handig mee..

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Je kunt voor "new" kiezen na "assign macro...", en dan de code erin pasten, dus dat je zoiets krijgt:
Visual Basic:
1
2
3
4
5
6
7
Sub DropDown1_Change()
    If Range("C2").Value = 13 Then
        Columns("Q").EntireColumn.Hidden = True
    Else
        Columns("Q").EntireColumn.Hidden = False
    End If
End Sub

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten

Pagina: 1