Verbergen CommandButtons volgens waarde in cel

Status
Niet open voor verdere reacties.

samabert

Gebruiker
Lid geworden
27 mrt 2010
Berichten
301
Ik vroeg mij af of je de code in het voorbeeld (Logboek_test) verkort kunt schrijven?

Het gaat erom de 16 CommandButtons 150 tot 165 te verbergen als de desbetreffende cel (Range E1:T1) eronder waarde nul heeft.

Gedeelte van de code:
Code:
Private Sub Worksheet_Calculate()

    If Range("E1").Value = "0" Then
        Me.CommandButton150.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("F1").Value = "0" Then
        Me.CommandButton151.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("G1").Value = "0" Then
        Me.CommandButton152.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("H1").Value = "0" Then
        Me.CommandButton153.Visible = False
        Me.CommandButton200.Visible = False

    End If
    End Sub
 

Bijlagen

  • Logboek_test.xlsm
    155,9 KB · Weergaven: 7
Zoiets?
 

Bijlagen

  • Logboek_test.xlsm
    120,5 KB · Weergaven: 5
Geen idee of ze weer zichtbaar moeten worden bij nul.
Er maar van uitgaande dan.
Code:
Private Sub Worksheet_Calculate()
  For j = 150 To 165
     sv = Range("e1:t1")
    OLEObjects("CommandButton" & j).Visible = sv(1, j - 149) = 0
       If sv(1, j - 149) > 0 Then x = x + 1
  Next j
 CommandButton200.Visible = x = 0
End Sub
 
@edmoor,

Bij het testen in mijn hoofdbestand krijg ik de melding Typen komen niet overeen.

Op volgende regel krijg ik een fout:

Code:
Btno=Right(shp.Name, 3)

Zoals ik bij de code van HSV ook meegeef, misschien is het nodig om een meer uitgewerkt voorbeeld te posten?

Toch al bedankt om te helpen.
 
@HSV,

Jouw code werkt juist andersom dan ik zou willen, als het resultaat van de formule aantal.als een nul is moet de command button onzichtbaar worden.

Bij jouw code komen bij het inloggen (voorbeeld TVA en dan paswoord, alle command buttons zichtbaar waar een nul als resultaat wordt weergegeven.

Ik gebruik Option explicit, maar dan wordt er gevraagd om "J" te definiëren, schakel ik option explicit uit dan werkt de code op zich wel.

Misschien moet ik een meer duidelijker voorbeeld weergeven want er dient om de command buttons zichtbaar te maken ingelogd worden met een login en paswoord.

Toch ook al bedankt om een oplossing aan te bieden.
 
@edmoor,

Bij het testen in mijn hoofdbestand krijg ik de melding Typen komen niet overeen.

Op volgende regel krijg ik een fout:

Code:
Btno=Right(shp.Name, 3)

Zoals ik bij de code van HSV ook meegeef, misschien is het nodig om een meer uitgewerkt voorbeeld te posten?

Toch al bedankt om te helpen.
Dan is je hoofdbestand anders dan je voorbeeld bestand.
 
Als het net andersom moet, dan:
Code:
Private Sub Worksheet_Calculate()
Dim j As Long
  For j = 150 To 165
     sv = Range("e1:t1")
    OLEObjects("CommandButton" & j).Visible = sv(1, j - 149) <> 0
       If sv(1, j - 149) > 0 Then x = x + 1
  Next j
 CommandButton200.Visible = x <> 0
End Sub
 
@HSV
Tot hier werkt jouw code, maar ik heb het waarschijnlijk niet goed uitgelegd wat ik zoek.

Hieronder de code hoe ik het werkende heb gekregen in het hoofdbestand, maar als het kan korter geschreven worden?

Voor elke kolom moet de controle uitgevoerd worden en dus per kolom mag de command button maar zichtbaar worden als deze niet op nul staat.

Voorbeeld: In kolom E1, als deze niet op nul staat dan command button 150 zichtbaar tot de waarde in E1 op nul komt en daarna de command button op hide komt. En niet alle kolommen die niet op nul staan tegelijk de command buttons zichtbaar maken.
Code:
Private Sub Worksheet_Calculate()

    If Range("E1").Value = "0" Then
        Me.CommandButton150.Visible = False
        Me.CommandButton200.Visible = False

      
    End If
    

    If Range("F1").Value = "0" Then
        Me.CommandButton151.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("G1").Value = "0" Then
        Me.CommandButton152.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("H1").Value = "0" Then
        Me.CommandButton153.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("I1").Value = "0" Then
        Me.CommandButton154.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("J1").Value = "0" Then
        Me.CommandButton155.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("K1").Value = "0" Then
        Me.CommandButton156.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("L1").Value = "0" Then
        Me.CommandButton157.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("M1").Value = "0" Then
        Me.CommandButton158.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("N1").Value = "0" Then
        Me.CommandButton159.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("O1").Value = "0" Then
        Me.CommandButton160.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("P1").Value = "0" Then
        Me.CommandButton161.Visible = False
        Me.CommandButton200.Visible = False

    End If


    If Range("Q1").Value = "0" Then
        Me.CommandButton162.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("R1").Value = "0" Then
        Me.CommandButton163.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("S1").Value = "0" Then
        Me.CommandButton164.Visible = False
        Me.CommandButton200.Visible = False

    End If

    If Range("T1").Value = "0" Then
        Me.CommandButton165.Visible = False
        Me.CommandButton200.Visible = False

    End If

End Sub

Eventueel maak ik een meer uitgebreid voorbeeld om het meer te verduidelijken.
 
@ edmoor,
Het voorbeeld dat ik meestuurde is waarschijnlijk te miniem, ik ga het nog even bekijken en zal dan een betere versie plaatsen.
 
@HSV

Voor elke kolom moet de controle uitgevoerd worden en dus per kolom mag de command button maar zichtbaar worden als deze niet op nul staat.

En niet alle kolommen die niet op nul staan tegelijk de command buttons zichtbaar maken.
Lees het zelf nog eens door, ik begrijp er in ieder geval niet veel van want het spreekt mekaar een beetje tegen in bovenstaande citaat.
 
Het 'gebruik' van 200 opdrachtknoppen lijkt me sowieso onverstandig, hoe je ze ook programmeeert.
 
@ snb,

Ik heb geen 200 command buttons, maar om vlug iets in elkaar te steken heb ik ze die nummering gegeven. Klinkt inderdaad verwarrend en niet duidelijk.

@HSV,

Het rare beestje heeft zijn weg naar ons bedrijf terug gevonden en de ene na de andere valt uit, maar zo gauw het kan kom ik hier op terug met een ander voorbeeld.

Toch iedereen al bedankt voor het meedenken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan