Help!

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

Hulp bij posten

Recente topics

Auteur Topic: VBA UF en symbolen  (gelezen 3230 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Oplosser
  • ****
  • Berichten: 604
  • Geslacht: Vrouw
  • Oplossing.be
Re: VBA UF en symbolen
« Reactie #15 Gepost op: 15 september 2022, 12:07:51 »
Goedemiddag iedereen,

Ik heb een nieuwe vraag maar wel voor hetzelfde bestand, doch een andere UF.

Ik heb dus een tweede UF met 7 CommandButtons waarachter de code moet komen voor diverse handelingen.
Elke handeling (achter elke knop) moet worden uitgevoerd met bepaalde waarden die afhankelijk zijn van de gekozen OptionButton (dit kunnen er 1 tot 30 zijn).
Om deze afhankelijke waarde te creëren dien ik vanuit de CommandButton een andere waarde (die gelinkt is aan de gekozen OptionButton) door te geven aan een module-macro waarin adhv van die andere waarde een Collection wordt aangemaakt die dan gebruikt moet worden in de code van de CommandButton.
Echter heb ik geen enkel idee hoe ik dit moet aanpakken.

Concreet voorbeeld (OptionButtons 1 tem 30 staan voor rijen 4 tem 33) :

Men kiest bv. OptionButton4, dus achter de CommandButton moet de rij-waarde op 7 worden bepaald (dit kan volgens mij het beste via een loop-procedure) en vervolgens doorgegeven worden aan de module-macro.
In de module-macro wordt dan adhv die rij-waarde (in dit geval 7) de corresponderende Collection aangemaakt.
Deze net gemaakte Collection moet vervolgens teruggestuurd worden naar de code achter de CommandButton alwaar de betreffende handeling moet worden uitgevoerd.


Hoe geef ik best die rij-waarde vanuit de CommandButton door naar de module-macro om aldaar adhv die rij-waarde de collection te maken en vervolgens die collection te gebruiken in de CommandButton?

Dus ik moet enkel maar weten hoe ik de betreffende variabelen met hun waarde moet doorgeven en terug ophalen. Met de code zelf voor de betreffende handelingen heb ik (voorlopig) geen problemen.

Alvast mijn oprechte dank voor tips en raad.


Groetjes,
BlackDevil

Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.238
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: VBA UF en symbolen
« Reactie #16 Gepost op: 15 september 2022, 17:18:32 »
BlackDevil, Als je 30 knoppen op je formulier hebt, zal je daar toch ook 30 cmd events voor moeten maken? Wellicht is het toch handig voor de "laten instappers" (zoals ik) je bestandje "tot nu toe" nog even plaatst als bijlagen. Dan praat iedereen weer over hetzelfde.
______________________________

Groet, Leo

Offline BlackDevil

  • Oplosser
  • ****
  • Berichten: 604
  • Geslacht: Vrouw
  • Oplossing.be
Re: VBA UF en symbolen
« Reactie #17 Gepost op: 15 september 2022, 19:14:59 »
@RedHead,

Hartelijk dank voor je reactie.
Het UF waarover ik het in mijn laatste vraag had bevat géén 30 commandbuttons hé, maar wel 1 tot 30 OptionButtons waarvan enkel diegenen zichtbaar zijn die via een for each loop een .caption hebben gekregen, deze OptionButtons staan dan ook gewoon in een frame.

Onder het frame staan 7 commandbuttons waarvan 2 waarvoor ik adhv van de gekozen OptionButton een bepaalde Collectie moet vullen waarmee de verdere code achter de CommanButton moet doorlopen worden zoals uitgelegd in mijn laatste bericht.

Ondertussen heb ik het eerste gedeelte in orde gekregen.
Achter de 2 betreffende CommandButton laat ik via een for each loop mbt de OptionButtons het rijnummer bepalen en geef ik die rij-variable door aan mijn module-macro waar de collectie dan gemaakt word.
Tot daar werkt alles reeds waarbij de correcte collectie gemaakt word.

Het enige waar ik totaal niet uit raak is hoe ik die collectie moet terugsturen naar de correcte commandbutton om vervolgens de rest van de code van die commandbutton  te laten doorlopen.

Ik heb eventjes mijn bestand aanzienlijk gestript en beperkt gehouden tot de eigenlijke vraag en hang het hier aan zoals gevraagd.

groetjes,
BlackDevil
Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.238
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: VBA UF en symbolen
« Reactie #18 Gepost op: 15 september 2022, 21:47:18 »
OK, dank voor je bijlage. Da's een mooi stuk werk wat je hier hebt bedacht en gemaakt!  \o/
Het is in elk geval niet ff iets waar ik nu zo gelijk als "instapper" een antwoord op heb voor je. Wat ik wel al zag, is dat de uitvraging bij CMD1 was gedaan op "enabled". Daar ga je geen juiste hits op krijgen en blijf je op optie 4 steken. Maak daar alvast dit van...
Private Sub CommandButton1_Click()
  '----- nagaan welke keuze werd gemaakt en adh daarvan de juiste rij bepalen
  For i = 1 To 30
    If Me.Frame1.Controls("OptionButton" & i).Value = True Then
      rij = i + 3
      Exit For
    End If
  Next i
 
  If IsEmpty(rij) Then
    MsgBox "Er is géén keuze gemaakt uit de opties! Maak een keuze...", vbOKOnly, "Keuze-stress?"
    Exit Sub
  End If
______________________________

Groet, Leo

Offline BlackDevil

  • Oplosser
  • ****
  • Berichten: 604
  • Geslacht: Vrouw
  • Oplossing.be
Re: VBA UF en symbolen
« Reactie #19 Gepost op: 15 september 2022, 22:12:17 »
@RedHead,

Bedankt voor het complimentje  ;) en je alertheid voor het opmerken van mijn "foutje".
Dit moest sowieso op .Value zijn en niet op .Enabled.... dat was een kleine missing van mij, was al
een jaar of twee geleden dat ik nog met OptionButtons had gewerkt en was dus even verstrooid  ;D .

groetjes,
BlackDevil
Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.238
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: VBA UF en symbolen
« Reactie #20 Gepost op: 15 september 2022, 22:18:23 »
Geen verplichting, maar om te leren als je dat leuk vindt...  ;)
Dit hele blok...
  '----- vermeldingen tellen op de bepaalde rij
  delen = Application.WorksheetFunction.CountIf(Sheets("hulp").Range("F" & rij & ":O" & rij), "<>")
  '----- gevonden aantal "delen" door 2 delen aangezien er achter elke kolom met vermelde range een kolom is met andere gegevens
  aantal = delen / 2
  '-----via select case adhv aantal vermelde ranges bepalen welke vermeldingen moeten opgenomen worden in een array
  Select Case aantal
    Case 1
      bereik = Sheets("hulp").Cells(rij, 6).Value
      myRng = Array(bereik)
    Case 2
      bereik = Sheets("hulp").Cells(rij, 6).Value
      bereik2 = Sheets("hulp").Cells(rij, 8).Value
      myRng = Array(bereik, bereik2)
    Case 3
      bereik = Sheets("hulp").Cells(rij, 6).Value
      bereik2 = Sheets("hulp").Cells(rij, 8).Value
      bereik3 = Sheets("hulp").Cells(rij, 10).Value
      myRng = Array(bereik, bereik2, bereik3)
    Case 4
      bereik = Sheets("hulp").Cells(rij, 6).Value
      bereik2 = Sheets("hulp").Cells(rij, 8).Value
      bereik3 = Sheets("hulp").Cells(rij, 10).Value
      bereik4 = Sheets("hulp").Cells(rij, 12).Value
      myRng = Array(bereik, bereik2, bereik3, bereik4)
    Case 5
      bereik = Sheets("hulp").Cells(rij, 6).Value
      bereik2 = Sheets("hulp").Cells(rij, 8).Value
      bereik3 = Sheets("hulp").Cells(rij, 10).Value
      bereik4 = Sheets("hulp").Cells(rij, 12).Value
      bereik5 = Sheets("hulp").Cells(rij, 14).Value
      myRng = Array(bereik, bereik2, bereik3, bereik4, bereik5)
  End Select

Kan je hierdoor vervangen...
  aantal = Application.WorksheetFunction.Count(Sheets("hulp").Range("F" & rij & ":O" & rij))
  ReDim myRng(aantal - 1)
  For i = 0 To aantal - 1
    myRng(i) = Sheets("hulp").Cells(rij, (i + 3) * 2).Value
  Next i
Jij bepaalt het aantal gevulde cellen in je hulptabel dmv de CountIf functie. Als je dit met de Count functie doet, tel je namelijk alleen de getallen en niet de teksten of lege cellen. Scheelt je weer een berekening én een variabele. Ook kan je deze methode makkelijker uitbreiden als je meer bereiken in een patroon kwijt moet. Dan hoef je alleen maar die O te vervangen naar een letter verder in het alfabet.

Echt een leuk project joh! Is het voor je zoon of dochter voor volgend jaar?
______________________________

Groet, Leo

Offline BlackDevil

  • Oplosser
  • ****
  • Berichten: 604
  • Geslacht: Vrouw
  • Oplossing.be
Re: VBA UF en symbolen
« Reactie #21 Gepost op: 16 september 2022, 09:02:06 »
@RedHead,

Ja hoor, altijd leuk om bij te leren hé  ;D.

Ik was nog van plan om uit te zoeken hoe ik dat codeblok kon inkorten maar doe dit meestal pas aan het einde
van een succesvol afgewerkte procedure  :).
Bedankt dan ook voor jouw ingekorte versie  :thumbsup: ;) (spaart me wat tijd uit  ;D) .

Nu inzake mijn initiële vraag (hoe een collection vanuit een module-macro door te geven aan een commandbutton)
had ik al een eventuele andere aanpak in gedachten en nu met deze ingekorte code is er geen twijfel meer om die
die andere aanpak ook effectief uit te voeren.

Ipv om vanuit de Commandbutton naar een module-macro te gaan om een collection te maken en vervolgens die
collection terug te sturen naar de commandbutton zelf om aldaar de verdere code uit te voeren zou ik het als volgt willen doen :

Gezien de verkorte code en het feit dat ik deze procedure enkel bij 2 CommandButtons moet doen zou ik dus met die
verkorte code de collection maken in de code van de CommandButton en vervolgens die Collection doorsturen naar
een module-macro waar dan de rest van de handeling gecodeerd staat. Ik denk dat dit de simpelste werkwijze zal worden.

Ik moet het nog uitproberen maar zodra ik er klaar mee ben laat ik hier wel weten of het me gelukt is  :).

Het bestand is voor mezelf, om telkens ik een borduurwerkje wil maken, dit via dit bestand te kunnen doen (in mijn origineel
bestand heb ik veel meer werkbladen en al tal van macro's staan voor wanneer er een nieuw project begonnen moet worden)
maar mijn huidig borduurwerk (216 kolommen op 270 rijen met 11 elementen (op het werkblad hulp)) is een huwelijkscadeau
voor mijn oudste dochter  ;). Het fysieke borduurwerk is 50cm x 40cm groot en telt ruim 23000 effectieve borduursteken.

groetjes,
BlackDevil
Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Oplosser
  • ****
  • Berichten: 604
  • Geslacht: Vrouw
  • Oplossing.be
Re: VBA UF en symbolen
« Reactie #22 Gepost op: 16 september 2022, 18:11:11 »
@RedHead

De nieuwe aanpak zoals vermeld in mijn laatste bericht is succesvol gelukt.



Groetjes,
BlackDevil
« Laatst bewerkt op: 16 september 2022, 19:21:50 door BlackDevil »
Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.238
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: VBA UF en symbolen
« Reactie #23 Gepost op: 16 september 2022, 20:50:42 »
 \o/

Goed om te horen!  Is hiermee je probleem dan ook opgelost? Ik had na mijn laatste bericht gisteravond en vandaag geen tijd om er verder in te duiken. Dus fijn dat het waarschijnlijk dan met mijn aanzet gelukt is.   :)
Tot een volgende vraag dan maar?
______________________________

Groet, Leo

Offline BlackDevil

  • Oplosser
  • ****
  • Berichten: 604
  • Geslacht: Vrouw
  • Oplossing.be
Re: VBA UF en symbolen
« Reactie #24 Gepost op: 16 september 2022, 21:10:41 »
@RedHead,

Ja, door de collecties rechtstreeks achter de commandbutton te maken en deze dan van daaruit naar een module-macro te sturen waar de code voor de uiteindelijk handeling wordt uitgevoerd is mijn initiële vraag (hoe een collectie terug sturen van module macro naar commandbutton) overbodig geworden. Dus dat is idd opgelost  :).
Alle code voor alle 7 de commandButtons op de UF is nu volledig afgewerkt.

Rest mij nu nog enkel de code voor 2 opdrachtknoppen op één van mijn andere werkbladen waarbij ik ook gebruik dien te maken van die collecties maar dan niet adhv van een gemaakte keuze maar wel gewoon direkt elke rij (element) vermeld op dat werkblad.

Dus ja, misschien dat er in die coderingen nog vragen zullen ontstaan ;-).

Alvast nogmaals bedankt voor jouw hulp. :thumbsup:


groetjes,
BlackDevil
Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection / Office Pro Plus 2016 NL

 


www.combell.com