Help!

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

Hulp bij posten

Recente topics

Auteur Topic: formules korter op schrijven. overzichtelijk maken.  (gelezen 1514 keer)

0 leden en 1 gast bekijken dit topic.

Offline Zomeren

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
formules korter op schrijven. overzichtelijk maken.
« Gepost op: 26 november 2022, 07:43:32 »
is dit in 2 of 3 regels samen te voegen?

Private Sub ComboBox6_Change()
Range("B20") = ComboBox6.Text
ComboBox6.Text = UCase(Left(ComboBox6.Text, 1)) & LCase(Mid(ComboBox6.Text, 2))
End Sub
Private Sub ComboBox7_Change()
Range("B21") = ComboBox7.Text
ComboBox7.Text = UCase(Left(ComboBox7.Text, 1)) & LCase(Mid(ComboBox7.Text, 2))
End Sub
Private Sub ComboBox8_Change()
Range("B22") = ComboBox8.Text
ComboBox8.Text = UCase(Left(ComboBox8.Text, 1)) & LCase(Mid(ComboBox8.Text, 2))
End Sub
Private Sub ComboBox9_Change()
Range("B23") = ComboBox9.Text
ComboBox9.Text = UCase(Left(ComboBox9.Text, 1)) & LCase(Mid(ComboBox9.Text, 2))
End Sub
Private Sub ComboBox10_Change()
Range("B24") = ComboBox10.Text
ComboBox10.Text = UCase(Left(ComboBox10.Text, 1)) & LCase(Mid(ComboBox10.Text, 2))
End Sub
Private Sub ComboBox11_Change()
Range("B25") = ComboBox11.Text
ComboBox11.Text = UCase(Left(ComboBox11.Text, 1)) & LCase(Mid(ComboBox11.Text, 2))
End Sub
Private Sub ComboBox12_Change()
Range("B26") = ComboBox12.Text
ComboBox12.Text = UCase(Left(ComboBox12.Text, 1)) & LCase(Mid(ComboBox12.Text, 2))
End Sub
Private Sub ComboBox13_Change()
Range("B27") = ComboBox13.Text
ComboBox13.Text = UCase(Left(ComboBox13.Text, 1)) & LCase(Mid(ComboBox13.Text, 2))
End Sub
Private Sub ComboBox14_Change()
Range("B28") = ComboBox14.Text
ComboBox14.Text = UCase(Left(ComboBox14.Text, 1)) & LCase(Mid(ComboBox14.Text, 2))
End Sub
Private Sub ComboBox15_Change()
Range("B29") = ComboBox15.Text
ComboBox15.Text = UCase(Left(ComboBox15.Text, 1)) & LCase(Mid(ComboBox15.Text, 2))
End Sub
Private Sub ComboBox16_Change()
Range("B30") = ComboBox16.Text
ComboBox16.Text = UCase(Left(ComboBox16.Text, 1)) & LCase(Mid(ComboBox16.Text, 2))
End Sub
Private Sub ComboBox17_Change()
Range("B31") = ComboBox17.Text
ComboBox17.Text = UCase(Left(ComboBox17.Text, 1)) & LCase(Mid(ComboBox17.Text, 2))
End Sub
Private Sub ComboBox18_Change()
Range("B32") = ComboBox18.Text
ComboBox18.Text = UCase(Left(ComboBox18.Text, 1)) & LCase(Mid(ComboBox18.Text, 2))
End Sub
Private Sub ComboBox19_Change()
Range("B33") = ComboBox19.Text
ComboBox19.Text = UCase(Left(ComboBox19.Text, 1)) & LCase(Mid(ComboBox19.Text, 2))
End Sub
Private Sub ComboBox20_Change()
Range("B34") = ComboBox20.Text
ComboBox20.Text = UCase(Left(ComboBox20.Text, 1)) & LCase(Mid(ComboBox20.Text, 2))
End Sub
Private Sub ComboBox21_Change()
Range("B41") = ComboBox21.Text
ComboBox21.Text = UCase(Left(ComboBox21.Text, 1)) & LCase(Mid(ComboBox21.Text, 2))
End Sub
Private Sub ComboBox22_Change()
Range("B42") = ComboBox22.Text
ComboBox22.Text = UCase(Left(ComboBox22.Text, 1)) & LCase(Mid(ComboBox22.Text, 2))
End Sub
Private Sub ComboBox23_Change()
Range("B43") = ComboBox23.Text
ComboBox23.Text = UCase(Left(ComboBox23.Text, 1)) & LCase(Mid(ComboBox23.Text, 2))
End Sub
Private Sub ComboBox24_Change()
Range("B44") = ComboBox24.Text
ComboBox24.Text = UCase(Left(ComboBox24.Text, 1)) & LCase(Mid(ComboBox24.Text, 2))
End Sub
Private Sub ComboBox25_Change()
Range("B45") = ComboBox25.Text
ComboBox25.Text = UCase(Left(ComboBox25.Text, 1)) & LCase(Mid(ComboBox25.Text, 2))
End Sub
Private Sub ComboBox26_Change()
Range("B46") = ComboBox26.Text
ComboBox26.Text = UCase(Left(ComboBox26.Text, 1)) & LCase(Mid(ComboBox26.Text, 2))
End Sub
Private Sub ComboBox27_Change()
Range("B47") = ComboBox27.Text
ComboBox27.Text = UCase(Left(ComboBox27.Text, 1)) & LCase(Mid(ComboBox27.Text, 2))
End Sub
Private Sub ComboBox28_Change()
Range("B48") = ComboBox28.Text
ComboBox28.Text = UCase(Left(ComboBox28.Text, 1)) & LCase(Mid(ComboBox28.Text, 2))
End Sub
Private Sub ComboBox29_Change()
Range("B49") = ComboBox29.Text
ComboBox29.Text = UCase(Left(ComboBox29.Text, 1)) & LCase(Mid(ComboBox29.Text, 2))
End Sub
Private Sub ComboBox30_Change()
Range("B50") = ComboBox30.Text
ComboBox30.Text = UCase(Left(ComboBox30.Text, 1)) & LCase(Mid(ComboBox30.Text, 2))
End Sub
Private Sub ComboBox31_Change()
Range("B51") = ComboBox31.Text
ComboBox31.Text = UCase(Left(ComboBox31.Text, 1)) & LCase(Mid(ComboBox31.Text, 2))
End Sub
Private Sub ComboBox32_Change()
Range("B52") = ComboBox32.Text
ComboBox32.Text = UCase(Left(ComboBox32.Text, 1)) & LCase(Mid(ComboBox32.Text, 2))
End Sub
Private Sub ComboBox33_Change()
Range("B53") = ComboBox33.Text
ComboBox33.Text = UCase(Left(ComboBox33.Text, 1)) & LCase(Mid(ComboBox33.Text, 2))
End Sub
Private Sub ComboBox34_Change()
Range("B54") = ComboBox34.Text
ComboBox34.Text = UCase(Left(ComboBox34.Text, 1)) & LCase(Mid(ComboBox34.Text, 2))
End Sub
Private Sub ComboBox35_Change()
Range("B55") = ComboBox35.Text
ComboBox35.Text = UCase(Left(ComboBox35.Text, 1)) & LCase(Mid(ComboBox35.Text, 2))
End Sub
Private Sub ComboBox36_Change()
Range("B56") = ComboBox36.Text
ComboBox36.Text = UCase(Left(ComboBox36.Text, 1)) & LCase(Mid(ComboBox36.Text, 2))
End Sub
Private Sub ComboBox37_Change()
Range("B57") = ComboBox37.Text
ComboBox37.Text = UCase(Left(ComboBox37.Text, 1)) & LCase(Mid(ComboBox37.Text, 2))
End Sub
Private Sub ComboBox38_Change()
Range("B58") = ComboBox38.Text
ComboBox38.Text = UCase(Left(ComboBox38.Text, 1)) & LCase(Mid(ComboBox38.Text, 2))
End Sub
Private Sub ComboBox39_Change()
Range("B59") = ComboBox39.Text
ComboBox39.Text = UCase(Left(ComboBox39.Text, 1)) & LCase(Mid(ComboBox39.Text, 2))
End Sub
Private Sub ComboBox40_Change()
Range("B60") = ComboBox40.Text

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #1 Gepost op: 27 november 2022, 13:20:23 »
Hallo Zomeren,

volgens mij (maar wie ben ik) klopt hier toch iets niet met je code:

Private Sub ComboBox6_Change()
Range("B20") = ComboBox6.Text
ComboBox6.Text = UCase(Left(ComboBox6.Text, 1)) & LCase(Mid(ComboBox6.Text, 2))
End Sub

In de combobox een Upper of lowerCase gaan toepassen op de tekst lijkt me weinig zinvol.

Mogelijk wil je UpperCase en LowerCase op Range("B20") toepassen ??? ???

Dat vraagt een aanpassing:

Private Sub ComboBox6_Change()
Range("B20") = ComboBox6.Text
Range("B20") = UCase(Left(ComboBox6.Text, 1)) & LCase(Mid(ComboBox6.Text, 2))
End Sub

Daarna zal je waarschijnlijk met één (of meer) Private Sub Worksheet_SelectionChange(ByVal Target As Range) moeten werken, en je Comboboxen onder variabelen gaan onderbrengen.

Ik zeg niet dat je de totale code niet kan inkorten (maar niet tot 3 of 4 regels, maar als ze werkt zou ik ze zo laten, het eet geen brood....

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

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #2 Gepost op: 27 november 2022, 13:40:55 »
Bedankt, ik laat het zo.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #3 Gepost op: 27 november 2022, 15:57:51 »
Toch wel even de vraag erbij waarom je elke textbox separaat (= door je change event) wil wegschrijven naar de sheet en niet alle textboxen in 1x als je hele formulier is ingevuld en je die bijvoorbeeld afsluit met een OK knop?
______________________________

Groet, Leo

Offline Zomeren

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #4 Gepost op: 27 november 2022, 16:08:34 »
de ComboBoxen staat op een cel op de sheet omdat een ComboBox iets meer kan dan gegevensvalidatie.
ooit ooit in een ver verleden was ik enkel met een sheet begonnen en steeds ontdekte ik meer mogelijkheden als een amateur...
tja om iets geheel nieuw te maken vind ik niet nodig, het werkt perfect voormijn werk als kleine zelfstandige.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #5 Gepost op: 27 november 2022, 16:17:01 »
Ah... je hebt de comboboxen (en niet textboxen wat ik schreef...  :-[) als besturingselement op de sheet zelf staan? Ik gok dan dat het een soort van offerte- of factuurtool is? Anders snap ik het wegschrijven naar 1 bepaalde cel per combobox niet.
Voor dat doel lijkt mij het afhandelen via gegevensvalidatie toch meer dan voldoende?

Er kan mer je worden meegekeken maar dan zal je je workbook hier ff moeten plaasen als bijlage.
______________________________

Groet, Leo

Offline Zomeren

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #6 Gepost op: 27 november 2022, 16:20:36 »
Precies het is een offerte/factuur programma met een tweede blad om weer op een andere manier een offerte op te bouwen.
ik vind het altijd prettig om alle tekst te zien die ook zo meteen op de offerte komt te staan waar is eventjes een regel kan aanpassen. 

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #7 Gepost op: 29 november 2022, 15:45:10 »
@ allen,

De teneur van TS' eerste post op dit forum werkte in mijn geval niet erg motiverend, maar nu het opvalt dat er wel wat misverstanden circuleren over combobox-kwesties wil ik toch op enkele zaken wijzen.
Er is niets mis met de opvatting dat het 'geen brood eet', maar niemand wil toch zulke code schrijven(?). Akkoord, vermoedelijk is er één sub geschreven, x maal gekopieerd en één voor één aangepast. Ook al niet leuk, en stel dat je nadien nog wijzigingen wil aanbrengen…
En het zou nog erger worden als er meerdere instructies per combobox achter zitten.

Een beetje flauw maar realistisch: je zou ook de vba-code kunnen laten schrijven door vba-code, maar dan nog blijf je met dezelfde onoverzichtelijke structuur zitten.

Aanzienlijk beter wordt het als je één inhoudelijke code schrijft die je door elk change-event laat aanroepen (nog steeds een change-event per combobox dus). Ik pak er als voorbeeld enkel de eerste twee subs bij, dan zou het dit kunnen worden:
Private Sub ComboBox6_Change()
cb 6
End Sub

Private Sub ComboBox7_Change()
cb 7
End Sub

Private Sub cb(nr)
Cells(nr + 14, 2) = Application.Proper(ActiveSheet.OLEObjects("ComboBox" & nr).Object.Value)
End Sub

Nog een stapje verder? Het veelvuldig verkondigde idee dat er bij elke combobox een change-event moet staan klopt niet, maar om dat te omzeilen moet je met een klassemodule aan de slag, en dat begint en eindigt helaas vaak met koudwatervrees.

Om het helemaal af te ronden: je kan ook al het voorgaande vergeten en het zonder vba oplossen. Want als elke combobox gelinkt is (let op de woordkeuze) aan een afzonderlijke cel, waarom dan niet de eigenschap LinkedCell gebruiken? Om te anticiperen op "en de hoofdletter dan?" hierbij een xlsx-voorbeeldje waarin ik, om het helemaal gezond te houden, een combobox heb gevuld met groenten zonder hoofdletter.

Mvg,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Zomeren

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #8 Gepost op: 29 november 2022, 23:34:05 »
Bedankt voor de uitgebreide uitleg.
ik begrijp het.

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: formules korter op schrijven. overzichtelijk maken.
« Reactie #9 Gepost op: 30 november 2022, 10:01:07 »
Dat is alvast positief.
Voel je zeker niet verplicht, maar het zou leuk zijn als we nog mochten vernemen of je er ook iets mee gaat doen.
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

 


www.combell.com