Help!

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

Hulp bij posten

Recente topics

Auteur Topic: geautomatiseerd sjabloon voor budget  (gelezen 62048 keer)

0 leden en 1 gast bekijken dit topic.

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #150 Gepost op: 24 augustus 2023, 16:55:02 »
Citaat
Alles werkt momenteel zoals verwacht

Akkoord, MAAR: heb jij jezelf onlangs geen perfectionist genoemd? :D
Dan zou je in
For Each ctrl In Me.MultiPage1.Pages(p).Controls
  If TypeName(ctrl) = "TextBox" Then
    If ctrl.BackColor <> &H8000000F And ctrl.BackColor <> RGB(164, 255, 255) Then
      Me.MultiPage1.Pages(p).Enabled = True
    End If
  End If
Next
toch moeten/kunnen zien dat je diezelfde 'page' ettelijke keren opnieuw zal 'enablen' (?)

Je zal hier misschien niet veel verschil zien, maar soms moet een code door massa's data gaan, en dan kan je écht wel beter mijn methode hanteren.
Blijven herhalen ga ik het anderzijds ook niet, hoor, ik geef het alleen nog eens mee in de wetenschap dat je het niet enkel werkend wil krijgen, maar ook écht wil bijleren, zoals je ons meermaals hebt benadrukt.

Groetjes,
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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #151 Gepost op: 24 augustus 2023, 18:51:46 »
Hey Molly,

inderdaad, hier moest ik nog enkele aanpassingen maken...
Ik ben hier de afgelopen dagen letterlijk met mijn bestand bezig in stukjes en brokjes (tussen allerhande andere zaken door)
dus de focus is niet 100% waardoor er hier en daar iets tijdelijk 'vergeten' wordt  ;D.
Ik had het eerst op die manier gedaan omdat ik met mijn vorige pogingen (nog binnen die "with"'s) elke keer opnieuw al mijn
paginas disabled kreeg als resultaat. Vandaar dat ik het dan erbuiten had gedaan door rechtstreeks met de pagina te werken
ipv een variabele om te zien of mijn code-opbouw wel deed wat het moest doen.
Het was sowieso de bedoeling om, eens ik de code werkend had gekregen, ik het dan opnieuw met een variabele ging proberen,
wat ik ondertussen ook gedaan heb.

Ik heb er nu dit van gemaakt :
For p = 11 To 0 Step -1
    actief = False
    For Each ctrl In Me.MultiPage1.Pages(p).Controls
      If TypeName(ctrl) = "TextBox" Then
        If ctrl.BackColor <> &H8000000F And ctrl.BackColor <> RGB(164, 255, 255) Then
            actief = True
            Exit For
         End If
      End If
    Next
    If actief = False Then Me.MultiPage1.Pages(p).Enabled = False
  Next p

En ja, ik ben altijd al perfectionistisch ingesteld geweest (tenminste als ik me voldoende kan focussen) en ook ontzettend leergierig  ;D
Maar zoals ik in het verleden al meermaals heb aangehaald heb ik door mijn polyneuropathie de laatste jaren sowieso regelmatig last
van verstrooidheid en geeft mijn korte termijngeheugen er ook vaak de brui aan  ;D dus als ik dan door andere omstandigheden ook
nog extra minder focus heb is dat nog erger en dan komt dat misschien over alsof ik niet wil 'luisteren' wat dus zeker niet het geval is.  ;)

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #152 Gepost op: 24 augustus 2023, 20:05:33 »
Citaat
dan komt dat misschien over alsof ik niet wil 'luisteren' wat dus zeker niet het geval is
Perfecto !
Je herwerkte code trouwens ook :thumbsup:

Groetjes,
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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #153 Gepost op: 25 augustus 2023, 17:14:53 »
***UPDATE***

Vandaag met een beetje meer focus aan het bestand kunnen werken en het tweede deel "betalingen uitvoeren" is voor de
helft afgewerkt.
Het is te zeggen, de code voor de UF (userform1) zelf is volledig af maar de module-sub om de echte berekeningen te gaan
doen moet wel nog geschreven worden.

Maar alvorens daar aan te beginnen voeg ik alvast nog eens een recente versie (1.3b) toe zodat dit eventjes kan 'nagekeken'
worden op mogelijke onderliggende bugjes (die voor mijn beperkte kennis misschien niet meteen zichtbaar zijn).


Ik ga nu alvast al eens op papier een schematische voorstelling maken van alle diverse berekeningen die er zullen moeten
gecodeerd worden.

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #154 Gepost op: 27 augustus 2023, 10:38:17 »
Hey Bieke,

Citaat
voeg ik alvast nog eens een recente versie (1.3b) toe zodat dit eventjes kan 'nagekeken' worden
"'t Is gebeurd"  :D
Niemand is natuurlijk beter geplaatst dan jijzelf om te achterhalen of er nog foutjes optreden, maar ik heb wel de code eens doorgenomen en zie globaal geen echte problemen (al garandeert dat dus niets 0:-))

Enkel met het 'activeren' van de huidige maand zit het nog niet goed: je loopt een maand voor ;)
En hoewel ik je voordien al een superkorte en eenvoudige manier had cadeau gedaan blijf je het met
Citaat
Me.MultiPage1.Value = (Month(Date) - Mid(Me.MultiPage1.SelectedItem.Name, 5)) + 1
nog altijd heel ingewikkeld maken.
'Mid(Me.MultiPage1.SelectedItem.Name, 5)' is op dat moment altijd 1, dus gebruik daarvan is overbodig.
Je hebt enkel 'Month(Date)' nodig (zie #144).

Groetjes,
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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #155 Gepost op: 27 augustus 2023, 12:26:44 »
Hey Molly,

'Mid(Me.MultiPage1.SelectedItem.Name, 5)' is op dat moment altijd 1, dus gebruik daarvan is overbodig.
Je hebt enkel 'Month(Date)' nodig (zie #144).

Hier moet ik je toch héél eventjes tegenspreken .... :-[
'Mid(Me.MultiPage1.SelectedItem.Name, 5)' is enkel maar 1 zolang "Page1" enabled is.
Zodra deze op disabled staat (wat in principe gedurende zowat 11 maanden van de 12 het geval zal zijn) dan
zal juist 'Month(Date) - 1' voor problemen zorgen...

Maar je had wel gelijk dat het daarmee nog niet goed zat omdat zoals het nu is hij gedurende 1 maand van de 12
ook problemen zal geven.
Ik heb het lijntje code dus eventjes aangepast naar dit :
If Mid(Me.MultiPage1.SelectedItem.Name, 5) <> 1 Then
    Me.MultiPage1.Value = (Month(Date) - Mid(Me.MultiPage1.SelectedItem.Name, 5)) + 1
  Else
    Me.MultiPage1.Value = Month(Date) - 1
  End If

Op deze manier activeert hij wél altijd de correcte pagina.


groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #156 Gepost op: 27 augustus 2023, 13:10:40 »
Hey Bieke,

Citaat
Hier moet ik je toch héél eventjes tegenspreken
Dat mag altijd ;), maar in dit geval geheel ten onrechte !

In het voorafgaand citaat staat o.a. "op dat moment". Daarmee bedoel ik (wat anders?) het moment waarop die code wordt uitgevoerd, en dat is in de initialisatie van het UF, en dan is altijd Page1 enabled (zie het formulierontwerp)
Nu jij weer :)

Groetjes,
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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #157 Gepost op: 27 augustus 2023, 15:42:14 »
Hey Molly,

mea culpa  :-[ :-[ :-[

Ik was in mijn redenering blijkbaar volledig verstrooid door index en name .... temeer omdat dit specifieke codelijntje onder
de code staat waar de paginas disabled worden.
Doordat, indien de eerste pagina disabled is, het indexnummer 0 dan toegewezen wordt aan de eerstvolgende
enabled pagina ben ik er in mijn verstrooidheid (onterecht) van uit gegaan dat de geselecteerde pagina ook
wijzigde (maw ik dacht dat zodra page1 disabled werd (via de code) dat dan automatisch page2 geselecteerd werd). :-[
Ik heb het dus terug aangepast... :thumbsup:

Mijn excuses voor mijn verstrooidheid en verkeerde redenering  :-[ .


groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #158 Gepost op: 28 augustus 2023, 10:49:22 »
Hey Bieke,

Mijn gevoel zegt mij dat je, als je eens een vrij moment vindt, er goed zou kunnen aan doen om deze kwestie eens volledig te proberen doorgronden. De dingen correct laten werken is één ding, ze écht begrijpen lijkt mij namelijk even nuttig.

Citaat
indien de eerste pagina disabled is, het indexnummer 0 dan toegewezen wordt aan de eerstvolgende enabled pagina
Die redenering is dus nog niet juist. Je kán het indexnummer uiteraard wijzigen, maar je doet het nergens (en maar goed ook!), en dus zal 'jan' altijd indexnummer 0 blijven hebben. SelectedItem daarentegen zal wel een ander zijn bij het laden van het UF als Page1 disabled is, maar daar moet je hier geen rekening mee houden want de juiste Page 'selecteren' is net de bestaansreden van dit stukje code.

Wat er exact gebeurt kan je makkelijk achterhalen door in het formulierontwerp een eenvoudig testje te doen.
Daar zie je bij Multipage Value=0 staan, en bij Page1 Index=0.
Verander bv. bij Page1 het indexnummer naar 3 en kijk alvast eens naar het gevolg op de multipage, daar zal 'feb' nu als eerste staan (zie 'en maar goed ook' in vorige alinea :D). In de eigenschappen heeft die nu index 0 en Multipage value is 3 (dat laatste tót je in het ontwerp op een andere maand klikt, waarbij index dan wél ongewijzigd blijft).

Dit is dus geen argument om je code nog te veranderen, maar enkel een mogelijke aanzet voor een volgend leermomentje ;)

Groetjes,
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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #159 Gepost op: 04 september 2023, 14:11:33 »
@Molly,

Mijn excuses voor de late reactie…
Na een dikke week zwaar ziek zijn (chronische zenuw- & -rugpijn, migraine en galkolieken in combinatie met overgangsklachten = geen lachertje… :'( ) ben ik vandaag eindelijk terug in staat om langer dan een half uurtje aan de pc te zitten….

Nadat de UF met multipage volledig werkte zoals het hoorde was ik vorige week al eens begonnen met de werking in praktijk te testen door de gegevens van het huidige kalenderjaar over te brengen naar de nieuwe bestandversie. Hierbij had ik toch wel enkele zaken opgemerkt die toch niet zo handig waren waardoor ik besloten heb de multipage te elimineren en een geschikter UF te maken voor de handelingen die gedaan moeten worden. Ik zal me dan ook op de totale multipage-werking op een later tijdstip wat intenser toeleggen inzake het gedrag van de index- en page-nummering.


@algemeen,

Wat niet gewijzigd is, is de handeling dat bij het verwerken van een “gekende” betaling dit in de juiste kolom als betaald gemarkeerd (via achtergrondkleur) dient te worden op het werkblad “jaaroverzicht”.
Het bepalen van de kolom gebeurd simpel op basis van de maand die geselecteerd werd in de UF maar om de juiste rij te kennen moet ik dus gaan zoeken op basis van de tegenpartij (en mededeling).

Meestal doe ik dit via :
zoekrij = .Columns(1).Find(partij).RowMaar aangezien ik een 5-tal tegenpartijen heb die meermaals voorkomen dien ik dus een tweede criteria te gebruiken, namelijk de mededeling.
Rechtstreeks op mededeling zoeken is echter ook geen optie aangezien ik een aantal mededelingen heb die meerdere keren voorkomen met telkens een andere tegenpartij.

Hoe kan ik nu het snelst de correcte rij vinden gebaseerd op die twee criteria?
De tegenpartij staat in kolom 1 en de mededeling staat in kolom 2.

In bijlage voeg ik een voorbeeld van het werkblad waarop gezocht moet worden.
Inzake privacy heb ik wel de bedragen verwijderd en enkele benamingen aangepast.


Alvast dank op voorhand.

Groetjes,
BlackDevil/Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #160 Gepost op: 04 september 2023, 18:07:08 »
Hey Bieke,

Oei, dat is (of beter: was) minder, in elk geval goed dat je er opnieuw tegenaan kan.

Anders dan vaak wordt aangenomen is het op een werkblad niet enkel mogelijk maar ook redelijk eenvoudig om in meerdere kolommen tegelijk te zoeken, maar met vba kom je altijd weer bij een loop terecht.
Als je de interactie met je werkblad tot één leesinstructie beperkt (lees: gebruik een array), dan zouden er al heel veel rijen in gebruik moeten zijn vooraleer je vertraging merkt. Verder dan in de bijlage zou ik het dus niet zoeken...

Een toemaatje voor het geval je ooit met erg grote arrays zou werken (ik zou er dan ook de vba-chronometer bijhalen :D):
een algmene constructie als "if x=1 and y=2 then" zou je dan kunnen opsplitsen in "if x=1 then" en pas daaronder "if y=2 then",
maar voor je huidige project dus nergens voor nodig.

Groetjes,
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 SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.398
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: geautomatiseerd sjabloon voor budget
« Reactie #161 Gepost op: 04 september 2023, 18:18:35 »
BlackDevil,

ik heb je code niet bekeken, heb geen tijd op het ogenblik.
Maar mijn eerste intuïtief gedacht zou zijn: zoek op beide (partij én mededeling) true zijn.

If .Colomns(1).Find(partij) = True And .Columns(1).Find(mededeling) = True Then
  Zoekrij = .Comumns(1).Find(partij).Row
End If

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

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #162 Gepost op: 05 september 2023, 11:11:42 »
Hey Molly en SoftAid,

Hartelijk dank voor jullie reacties  ;).

@Molly,

Mijn eerste ingeving was ook om gebruik te maken van een 'loop'-je maar hoopte ergens dat het eventueel mogelijk zou
geweest zijn met een simpel codelijntje (of twee) zonder 'loop' om volgende reden :

De bron-gegevens (voor het verwerken van de betalingen) worden via een 'loop' ingelezen vanuit werkblad "TA_done" waarbij dan
alle nodige gegevens in een variabele gestoken worden.
Vervolgens dienen deze gegevens op zo'n 4-tal andere werkbladen 'verwerkt' te worden met tal van diverse voorwaarden
(combinatie van if-statements en select case's).
Het bepalen van de juiste rij op werkblad "jaaroverzicht" is dan ook maar een zeer klein onderdeel van het volledige code-blok (ca 125 lijntjes).
Mijn hoop om dit simpel en zonder 'loop' te kunnen doen had dan ook niets te maken met de 'snelheid' van de code maar was eerder voor de
visuele duidelijkheid van de code op zich.
Ik heb het dan toch met een 'loop' gedaan zoals jij hebt aangereikt  :thumbsup: maar dan wel zonder het 'array'-aspect. Gezien het maar 24 rijen zijn waarin
gezocht moet worden (en dit naar de toekomst toe altijd minder dan 40 rijen zullen zijn) zag ik niet meteen een meerwaarde in het 'array'-aspect.
het is dus, voor het onderdeel van werkblad "jaaroverzicht", dit geworden :
With Sheets("jaaroverzicht")
          If gekend = "j" Then
            For jj = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
              If .Cells(jj, 1) = partij And .Cells(jj, 2) = med Then
                j = jj
                Exit For
              End If
            Next jj
            kol = mndsel + 2
            .Cells(j, kol).Interior.Color = RGB(164, 255, 255)
          End If
        End With


@SoftAid,
In mijn compleet gestript voorbeeldbestandje stond (nog) geen code.
Jou aangereikte code-blokje, zelfs als ik voor het tweede criteria de .Columns() verbeter van 1 naar 2,
zal dit nooit werken aangezien beide altijd 'waar' zullen zijn en zoekrij op deze wijze altijd '0' zal geven als resultaat.
Er moet namelijk niet gezocht worden OF de waarden aanwezig zijn (want dat zijn ze altijd) maar wel op welke ZELFDE rij ze vermeld staan.
Maar sowieso toch bedankt voor jouw poging   ;)


groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #163 Gepost op: 06 september 2023, 11:51:44 »
Hey Bieke,

Een 'codelijntje of twee' is moeilijk haalbaar, maar nog ietsje inkorten kan wel: je gebruikt zelfs 2 overbodige variabelen.
Minder leesbaar wordt het daardoor ook niet (vind ik toch zelf ;)):
With Sheets("jaaroverzicht")
  If gekend = "j" Then
    For jj = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
      If .Cells(jj, 1) = partij And .Cells(jj, 2) = med Then
        .Cells(jj, mndsel + 2).Interior.Color = RGB(164, 255, 255)
        Exit For
      End If
    Next jj
  End If
End With

Nog een paar wetenswaardigheden misschien?, dus volgende ook @ SoftAid  :)
Find geeft geen True of False, maar ofwel eigenschappen van een cel (waarde, adres...) ofwel een fout!
Foutmeldingen willen we natuurlijk niet, dus dat kan men bv. opvangen met "If Not range.Find(zoek) Is Nothing Then"

...en vooral @ SoftAid (wetende dat Bieke niet de enige is die altijd wil bijleren ;))
Zoals Bieke opmerkte zou, zelfs als die True mogelijk was, je gewoon zoeken in beide kolommen, maar onafhankelijk van elkaar, om dan effectief verder te gaan met de gevonden rij uit de eerste kolom (in tegenstelling tot Bieke's veronderstelling zou zoekrij dan niet 0 maar wel 16 zijn, nl. de eerste rij waarop 'partij' voorkomt).
Intuïtie, ik volg ze soms ook, maar was hier helaas een slechte raadgever :D

Groetjes,
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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #164 Gepost op: 06 september 2023, 12:58:40 »
Hey Molly,

Inderdaad, verder inkorten door overbodige variabelen te elimineren is zeker mogelijk en stond nog op het 'to do'-lijstje  ;).
Maar meestal doe ik dit tijdens de "opkuis" nadat de volledige code uitgebreid getest is  ;D.

maar euhm ....
Zoals Bieke opmerkte zou, zelfs als die True mogelijk was, je gewoon zoeken in beide kolommen, maar onafhankelijk van elkaar, om dan effectief verder te gaan met de gevonden rij uit de eerste kolom (in tegenstelling tot Bieke's veronderstelling zou zoekrij dan niet 0 maar wel 16 zijn, nl. de eerste rij waarop 'partij' voorkomt).
Intuïtie, ik volg ze soms ook, maar was hier helaas een slechte raadgever :D

dat de zoekrij waarde '0' geeft was zeker geen blinde veronderstelling...
Om mezelf ervan te verzekeren dat ik niet opnieuw 'domme' dingen zou reageren door zomaar iets te 'veronderstellen'
had ik die code van SoftAid toch maar eens 'uitgeprobeerd' en ik kreeg sowieso altijd de waarde '0' ...
Vandaar mijn stelling dat het altijd waarde '0' geeft.
Ook heb ik totaal geen foutmelding gekregen inzake de true/false van de 'find' dus vermoed ik dat die resulterende '0'-waarde
van de zoekrij eigenlijk het resultaat was van 2x een '0' waarde mbt true ?  Of sla ik hier weer eens de bal mis ?  :D


groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

 


www.combell.com