Help!

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

Hulp bij posten

Recente topics

Auteur Topic: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen  (gelezen 69515 keer)

0 leden en 1 gast bekijken dit topic.

Offline AnthonyVDD

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
hallo,

ik ben aan een nieuwe excel voor materialen lijst aan het werken.
in deze versie zou ik graag gebruik maken van activeX elementen om dat eindeloos scrollen tegen te gaan en een gebruiksvriendelijk overzicht te behouden.

ik schets even kort mijn eerste probleem.

op de afbeelding in bijlage ziet u het hoofd layout, lijnen 1 tot 25 staan vast en scrollen mee indien nodig.
daaronder, in het dikke zwarte omlijnde kader, zijn de formaten die in stock liggen.
in dit geval rijen 26 tot 34, moet verschijnen en verdwijnen wanneer het activeX box aangeklikt word ( de rood omcirkelde 1 voor DC01)

ieder materiaalsoort zal zijn eigen activeX box krijgen, het zijn er heel wat.
ik heb hier al een code voor de eerste box, maar ze is niet compleet :
Rows("26:34").Select
If Selection.EntireRow.Hidden = True Then
Selection.EntireRow.Hidden = False
Else
Selection.EntireRow.Hidden = True
End If


wat tekort is aan deze code is wanneer box DC01 actief is, en vervolgens bijvoorbeeld box s355mc aangeklikt word, dan zou box DC01 (en alle andere eigenlijk), automatisch terug moeten inklappen

zodat er altijd 1 kader uitgeklapt is en de rest altijd ingeklapt, er kan ten allen tijde maar 1 box actief zijn (en dus ook maar 1 kader zichtbaar zijn)

hoe zou die VBA stelling er dan uitzien?

probleem 2:
en dit zal wslk een moeilijke zijn. in combinatie met een materialensoort box, moet ook de dikte box kunnen aangeklikt worden (nummer 2 rood omcirkeld)

want van vb. DC01 zijn er tientallen diktes, en als box DC01 + een box van dikte 3 aangeklikt word : word er eigenlijk gefilterd op materiaalsoort + op de dikte, en moet er opnieuw niet gescrolled worden.

hoe zal de VBA stelling er dan uitzien?

probleem 3:
bij opstart van de excel moeten alle dik omrande kaders verborgen zijn, alsook moet er een box komen met "alle filters off" om ook alle kaders te verbergen.

hoe zal de VBA stelling er uitzien?

alvast bedankt voor uw reactie!

mvg,
Anthony

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #1 Gepost op: 07 december 2018, 13:00:42 »
Hallo Anthony,

uit ervaring weet ik dat hier echt een voorbeeldbestandje bij moet. Een afbeelding zegt echt niet veel  0:-).

Maak even een voorbeeld.xlsm met daarin hoogstens 3 of 4 materialen, en bvb 4 diktes...
Laat de kleurtjes maar even rusten  ;D.

Waar staat je voorraad-info, je materiaal-lijsten? Hoe pas je de voorraad aan?

Vele wegen leiden naar Rome.... Een voorbeeldbestand is een kwestie om hier geen (onnodige) omwegen te maken.

:) 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 AnthonyVDD

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #2 Gepost op: 07 december 2018, 13:11:41 »
excel file in bijlage, met 2 boxen die ik gemaakt had.
kleurtjes beetje gewist, momenteel is de file meer dan 800 rijen lang, dat is zogezegd alle data (uiteindelijk zal de file wslk 4.000 rijen lang worden)
ieder dik omrand kader spreekt over een stock van bepaald materiaal soort met dikte, en formaat. het kader dient gewoon om dat visueel makkelijker te maken.
voorraad aanpassen gebeurt in het kader zelf (STOCK, DELIVERED KG, ....) de activeX boxen bovenaan is louter om alles met 1 of 2 klikken naar voor te brengen.
er moeten nog een deel formules bijkomen om tonnages te bereken binnenin de kaders, maar dat is maar klein werkje.
mijn moeilijkheid is het open/dichtklappen als er op een activeX box geklikt word


Offline emields

  • Ervaren lid
  • ***
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #3 Gepost op: 07 december 2018, 19:33:57 »
Kies een DC en dubbelklik in het roodomrande gedeelte.

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #4 Gepost op: 08 december 2018, 11:53:39 »
Hallo Anthony,
Ik zou met een tabel werken en een zoekformulier.
Zie het uitgewerkte voorbeeld.
Je opent het formulier, je kiest een materiaalsoort en een dikte.
Dan kies je in de lijst met de items die zijn overgebleven de lijn die je wilt hebben en de lijn wordt geselecteerd.

Offline AnthonyVDD

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #5 Gepost op: 10 december 2018, 09:24:18 »
Goedemorgen,

Iedereen alvast bedankt voor de voorstellen en de inspanning.
Het model van Dotchiejack is wat we voorheen gebruikten, we willen van dat principe af stappen omdat er teveel moet geklikt worden om een resultaat te verkrijgen :
klik op materiaal filter >
klik op alles (de)selecteren >
klik op gewenste materiaal >
Klik op Z filter >
klik op alles (de)selecteren >
klik op gewenste Z selectie>

ofwel minder kliks en meer scrollen, maar op een filter geklikt moet je opnieuw klikken in de filter om te kunnen scrollen.

ofwel klik op filter >
intypen wat je wenst > wat niet altijd even handig is naar typ fouten.

probleem hier is, toch op mijn pc, dat ik altijd moet dubbel klikken op filters, ligt dat nu aan mijn pc of aan windows of aan het feit dat er tien programma's openstaan ik weet het niet, maar het is altijd miserie ik moet in windows dikwijls overal 2-3 keer op klikken eer het werkt. talloze muizen heb ik al versleten dus daar ligt het volgens mij ook niet echt aan  :'(

vandaar had ik graag verder gedaan met het model die ik gestart was, met 2 kliks is de data die nodig is zichtbaar, raar maar waar : ik heb geen klik problemen op een activeX button...
de ActiveX element boxen zijn groot en duidelijk, in tegenstelling tot filter knoppen : die zijn klein en soms makkelijk naast te klikken, ik werk snel op een pc, mikken op een knop van 4x4 mm is niet handig op hoge snelheid :-)

we werken ook met 14 mensen in die gedeelde excel, zowel binnen als buiten europa, vandaar het bijhouden van geleverde kilo's, alsook verbruik op dat moment (VED,M-steel, ANV, PEV), moet allemaal bijgehouden worden

mag ik uitmaken uit de excel van emields, dat het niet mogelijk is om met gecombineerde activeX boxen te werken, gezien er op de dikte geen box staat?



alvast bedankt voor jullie inspanning.

mvg

Anthony



Offline AnthonyVDD

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #6 Gepost op: 10 december 2018, 13:54:40 »
ondertussen heb ik volgende stelling gezet, deze 2 combineren feilloos samen, nu kan ik filteren op materiaal soort en op dikte in amper 2 klikken.

(button materiaalsoort)
Private Sub DC01L_Click()
Rows("26:116").Select
If Selection.EntireRow.Hidden = True Then
Selection.EntireRow.Hidden = False
Else
Selection.EntireRow.Hidden = True
End If
End Sub

(button Z)
Private Sub DC0105_Click()
Rows("27:35").Select
If DC01L= True Then
Selection.EntireRow.Hidden = False
Else
Rows("36:116").Select
Selection.EntireRow.Hidden = True
End If
End Sub

waarschijnlijk is dit allemaal kinderspel voor echte programmeurs :-) en kun deze twee stellingen waarschijnlijk in 1 samengevoegd worden, maar ik ben een technisch tekenaar dus ik ken daar allemaal niet zoveel van :p

ik werk dit nog even verder uit deze week, ik zal het resultaat posten.
ik verwacht wel nog ergens een probleem met een filter die alles ON/OFF zet, maar dat zien we dan wel.


Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #7 Gepost op: 10 december 2018, 14:33:08 »
Beste,
Les 1 in VBA, vermijd het gebruik van select en/of activate, het is zelden nodig en het vertraagt je code big time.
Private Sub DC01L_Click()
With Rows("26:116")
If .EntireRow.Hidden = True Then
    .EntireRow.Hidden = False
Else
    .EntireRow.Hidden = True
End If
End With
End Sub
Private Sub DC0105_Click()
If DC01L = True Then
Rows("27:35").EntireRow.Hidden = False
Else
Rows("36:116").EntireRow.Hidden = True
End If
End Sub

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #8 Gepost op: 10 december 2018, 14:33:44 »
Hallo Anthony,

mij bekruipt al lang het gevoel dat je het te ver zoekt.

Als je bij elke knop (als je persé knoppen wilt) de macro eerst al de rijen laat verbergen, en daarna enkel die rijen zichtbaar maakt die bij die knop horen, dan heb je toch geen probleem.
Private Sub DC01L_Click()
Rows("26:10000").Select
Selection.EntireRow.Hidden = True
Rows("26:116").Select
Selection.EntireRow.Hidden = False
End Sub

:) 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 Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #9 Gepost op: 10 december 2018, 14:38:18 »
Code van SoftAid zonder de overbodige selects.
Private Sub DC01L_Click()
Rows("26:10000").EntireRow.Hidden = True
Rows("26:116").EntireRow.Hidden = False
End Sub

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #10 Gepost op: 10 december 2018, 14:40:17 »
Dank U Dotchiejack,

veel korter kan het al bijna niet meer  ;D

:) 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 Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #11 Gepost op: 10 december 2018, 15:11:03 »
Nog ietsje korter ;D
Private Sub DC01L_Click()
    [26:1000].EntireRow.Hidden = True
    [26:116].EntireRow.Hidden = False
End Sub

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #12 Gepost op: 10 december 2018, 15:25:42 »
Ik vond dit extraatje nog om de lege rijen weg te halen in het resultaat:

Private Sub DC01L_Click()
 [26:1000].EntireRow.Hidden = True
 [26:116].EntireRow.Hidden = False

'---------------Haal lege rijen weg------------------
Application.ScreenUpdating = False
Dim s As String
For i = 1 To range("A26:A116").Count
    s = i & ":" & i
    If IsEmpty(Cells(i, 1).Value) Then
         Rows(s).EntireRow.Hidden = True
    End If
Next
Application.ScreenUpdating = True
'-------------------------------------------------------

End Sub

:) 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 AnthonyVDD

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #13 Gepost op: 10 december 2018, 15:27:36 »
net wat ik bedoel dat echte programmeurs alles kunnen inkorten tot bijna een singulariteit  ;D

bedankt voor de code alvast!

hou deze topic nog even open, je weet nooit als ik morgen nog op een probleem bots

mvg

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: VBA in activeX : rijen tonen/verbergen in combinatie met 25 activeX elementen
« Reactie #14 Gepost op: 10 december 2018, 16:15:22 »
Even mijn fout aangepast.
Private Sub DC01L_Click()
Set wf = Application.WorksheetFunction
[26:1000].EntireRow.Hidden = True
For I = 26 To 116
    If wf.CountA(Range("A" & I & ":AD" & I)) = 0 Then
        Rows(I).Hidden = True
    Else
        Rows(I).Hidden = False
    End If
Next I
End Sub


 


www.combell.com