Help!

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

Hulp bij posten

Recente topics

Auteur Topic: VBA-code versnellen/aanpassen/opschonen...  (gelezen 12338 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #30 Gepost op: 30 augustus 2021, 21:57:04 »
@Albert,

De code hoeft voor mij niet persé korter hoor, ik wou alleen maar duidelijk maken dat ik weet dat mijn code beter kan  ;).

Wat die TextAlign-eigenschap betreft weet ik wel dat ik deze gewoon in eigenschappen kan aanpassen maar omdat ik het in mijn loops maar een 4-tal keren moest ingeven tegenover 48 textboxen in de eigenschappen opteerde ik voor de code in de loops... Had echt geen zin om opnieuw 48 x een textbox te gaan selecteren om vervolgens die ene eigenschap aan te passen. Misschien dat ik me hier nog eens achter zet eens het bestand volledig gecodeerd is....

Wat de getalnotatie voor de textboxen met bedragen betreft dacht ik toch wel dat uit mijn bestand blijkt dat ik dit netjes opgelost heb met mijn FormatCurrency-code.....

Van alle textboxen met bedragen erin is er uiteindelijk maar ééntje dat eventueel handmatig zal ingevuld worden en dat is de textbox 'bedrag' in het frame 'transacties'.

De textboxen in maand-overzicht links van de UF en in de saldo-overzichten rechtboven op de UF, alsook van de 'Stand na TA' worden allemaal automatisch ingevuld door VBA.

En voor die ene textbox waar eventueel handmatig het bedrag wordt ingetypt heb ik een "afterupdate" event voor die textbox ingevoegd.


groetjes,
BlackDevil
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 AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #31 Gepost op: 31 augustus 2021, 11:33:21 »
Citaat
Had echt geen zin om opnieuw 48 x een textbox te gaan selecteren
Weetje:
Click rechts in frame en dan op "alles selecteren" , de eigenschappen kun je dan in 1x aanpassen.
( hier de beste optie omdat de labels ook rechts uitgelijnd zijn)

Of: Ctrl vasthouden +linksClicken  en je kunt alleen die objecten selecteren waarvan je de eigenschappen wilt aanpassen.

succes.

Groet,

Albert

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #32 Gepost op: 31 augustus 2021, 11:39:56 »
@Albert,

 :thumbsup: is inderdaad een héél handig weetje  :thumbsup:
Had geen idee dat je in de ontwerpmodus de eigenschappen van meerdere objecten tegelijkertijd kon aanpassen.

Weer iets bijgeleerd  ;)  _/-\o_


groetjes,
BlackDevil
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 AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #33 Gepost op: 31 augustus 2021, 11:57:40 »
Heeft bij mij ook wel wat tijd gekost voordat ik het in de gaten had. ;D
Al doende leert men.
Groet,

Albert

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #34 Gepost op: 31 augustus 2021, 17:58:52 »
Nu ga ik mij wat verdiepen in de code die achter de opdrachtknop 'uitvoeren' moet komen en dan nog de code voor de verdere verwerking op de werkbladen zelf.

***UPDATE***

Alweer een dagje verder en ben klaar met de globale codering achter de opdrachtknop 'uitvoeren' van het UF alsook de code achter de knop 'bestand resetten' op het werkblad 'Budget' en tot hiertoe lijkt alles te doen wat het hoort te doen. Verder heb ik ook de opmaak van vooral het blad 'Budget' wat meer aan mijn smaak aangepast (afbeeldingen, tekstkleuren, kolombreedtes, rijhoogtes, extra formules, enz...).

Globaal heb ik nu nog drie codeblokken te coderen (waarvoor ik zeker nog hulp zal nodig hebben), nl :
- het codeblok om, na de reset van het bestand, het bestand op te slaan onder een nieuwe naam (bij een nieuw kalenderjaar dus).
- het codeblok om, nadat ik de nodige bewerkingen heb uitgevoerd, het actuele bestand standaard op te slaan en af te sluiten
- het codeblok om het werkblad 'rek-overzichten', ingeval er toch eens een transactie van een eerdere datum nog toegevoegd moest worden, chronologisch te sorteren en de standen opnieuw te berekenen (deze situatie gebeurd niet zo héél vaak maar toch vaak genoeg dat ik er toch wel die code voor wil toevoegen zodat het overzicht steeds netjes chronologisch staat volgens de transacties op de werkelijke rekeningen.)

Maar eerst moet de code toch nog eens grondig doorgenomen worden om na te gaan dat alle diverse codeblokken wel netjes aan elkaar aansluiten (dus geen conflicten tussen de diverse codeblokken), mogelijke schoonheidsfoutjes eruit te halen, te zorgen dat alle i'tjes voorzien van een puntje  ;D, de nodige fail-save's in te bouwen ingeval van een foute ingave/handeling, enz...
Wie zich geroepen voelt mij hierbij te willen helpen mag het hier altijd melden  ;).

In bijlage de laatste versie van mijn bestand.

groetjes,
BlackDevil
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 Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #35 Gepost op: 31 augustus 2021, 18:17:30 »
ik citeer :
- het codeblok om, na de reset van het bestand, het bestand op te slaan onder een nieuwe naam (bij een nieuw kalenderjaar dus).
- het codeblok om, nadat ik de nodige bewerkingen heb uitgevoerd, het actuele bestand standaard op te slaan en af te sluiten



in mijn bestand vind je de code terug om het bestand standaard op te slaan , wanneer je maar wilt ? onder de knop afsluiten ?
en als je kijkt bij de code van de knop "Nieuw" vind je ook alles terug om het bestand na een reset (nieuw) op te slaan onder een op te geven naam ;)
Mvg,
Montagnard.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #36 Gepost op: 31 augustus 2021, 18:25:04 »
**edit**

Net al een eerste 'vergetelheidje/foutje' gevonden....

Achter de knop 'bestand resetten' vergeten om de saldo's op de rij van de beginstand (blad rek-overzichten) waarde 0 te geven
waardoor ik bij het openen van het UF een foutmelding kreeg mbt FormatCurrency.
Eerste foutje bij deze opgelost  ;).

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

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #37 Gepost op: 01 september 2021, 08:40:09 »
@Montagnard,

Hartelijk dank voor jouw voorbeelden.
(heb echter wel problemen gehad om jouw bestand te kunnen sluiten zonder het ook op te slaan (dus via het kruisje rechtsboven), heb eerst al mijn andere excel-bestanden moeten afsluiten alvorens ik het jouwe kon afsluiten via het kruisje)

Voor mijn specifiek bestand (toch een iets andere werkwijze) heb ik de code uiteindelijk als volgt opgebouwd :
voor het opslaan na een reset onder een nieuwe naam :
'bestand 'opslaan als'-bestand voor nieuw kalenderjaar met nieuwe naam
bestandsnaam = Sheets("Budget").Cells(3, 3).Value & ".xlsm"
padnaam = "D:\Boekhouding\"
ActiveWorkbook.SaveAs Filename:=padnaam & bestandsnaam

voor het opslaan & afsluiten van het actuele bestand :
'bestand opslaan
ActiveWorkbook.Save
Sheets("Budget").Cells(3, 3).Select
' vragen of het bestand ook gesloten mag worden
response = MsgBox("Bestand ook afsluiten?", vbYesNo + vbExclamation, "Bestand afsluiten")
If response = vbYes Then
'nogmaals laten bevestigen ter controle
response = MsgBox("Zeker dat u volledig klaar bent?", vbOKCancel + vbInformation, "Bevestiging")
If response = vbOK Then
ActiveWorkbook.Close
End If
End If

groetjes,
BlackDevil
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 Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #38 Gepost op: 01 september 2021, 09:25:59 »
dag ,
bij de functie "Nieuw" (nieuw bestand/boekjaar) is de reden dat ik geen specifiek pad en naam bepaal , dat eventueel "anderen" ook mijn "programma" kunnen gebruiken zonder de code te moeten veranderen...
de andere zaken zoals categorieën  en begunstigden en de maandelijkse kunnen makkelijk naar wens aangepast worden...
als ze het Uwe willen gebruiken gaan ze de code op zich moeten aanpassen want niet iedereen heeft b.v. een 'D' schijf/partitie..
Maar in het werkboek dat ikzelf persoonlijk gebruik staat er ook een specifiek pad aangegeven  ;)...
Mvg,
Montagnard.

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #39 Gepost op: 01 september 2021, 10:59:46 »
Hallo BlackDevil,

In de code van Cmd_uitvoeren_Click zie ik dit staan.??

.Cells(rek, 7) = .Cells(rek - 1, 7) + .Cells(rek, 3) - (.Cells(rek, 4) + .Cells(rek, 5) + .Cells(rek, 6))
.Cells(rek, 11) = .Cells(rek - 1, 11) + .Cells(rek, 9) - .Cells(rek, 10)
 .Cells(rek, 15) = .Cells(rek - 1, 15) + .Cells(rek, 13) - .Cells(rek, 14)

Daar is het toch allemaal mee begonnen.

Groet,

Albert

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #40 Gepost op: 01 september 2021, 11:14:35 »
@Albert,

Het codeblok waarnaar jij nu verwijst wordt enkel uitgevoerd op de rij die op dat moment word ingevoerd en dus niet meer op alle rijen bij elke nieuwe invoer. Als ik de rek-stand na elke transactie wil kennen (zoals het doel is van het werkblad 'rek-overzichten) dan heb ik die berekening toch nodig? Ik begrijp eerlijk gezegd het probleem niet om een berekening op 1 rij door vba te laten uitvoeren.
Aangezien vba die berekening nu niet meer op alle rijen moet doorlopen ging ik ervan uit dat hiermee het oorspronkelijke probleem voorkomen zou worden. Zie ik het dan volledig verkeerd?


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

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #41 Gepost op: 01 september 2021, 11:29:33 »
*update*

Ik ben momenteel bezig met de laatste details op punt te zetten en er is één stukje code dat ik nodig heb maar waarvoor ik de juiste syntax/structuur niet vind.

Ik zoek dus de juiste opbouw voor een “For Each… Next…”-loop waar het de bedoeling is dat elke cel in de benoemde bereiken “Inkomsten” – “Maandelijks” – “Niet-maandelijks” op het werkblad “Jaaroverzicht” gecontroleerd word op de Interior.Color en als deze de kleur “RGB(102, 255, 255)” heeft dat de Interior.Color dan teruggezet wordt naar “xlNone”.

Enige hulp wordt ten zeerste geapprecieerd. Alvast dank op voorhand.

groetjes,
BlackDevil
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 AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #42 Gepost op: 01 september 2021, 11:57:04 »
Citaat
Het codeblok waarnaar jij nu verwijst wordt enkel uitgevoerd op de rij die op dat moment word ingevoerd
Sorry, niet goed gekeken.
Groet,

Albert

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #43 Gepost op: 01 september 2021, 12:05:51 »
En voor jouw laatste vraag lijkt me dit voldoende.
Sheets("Jaaroverzicht").Range("A1:M33,A37:M62").Interior.Color = xlNone
Mocht je toch nog sommige rijen willen kleuren dan de range aanpassen.
Groet,

Albert

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA-code versnellen/aanpassen/opschonen...
« Reactie #44 Gepost op: 01 september 2021, 12:12:44 »
@Albert,

mbt dat ene codeblok, geen probleem  ;), overkomt mij ook wel eens dat ik ergens over kijk  ;D.


En dat mbt mijn vraag voor de celkleur...
tuurlijk..., ik ging het weer véél te ver zoeken  :-[  :D :D

Bedankt alweer  _/-\o_ :thumbsup:

groetjes,
BlackDevil

**edit**

Toch nog een kleinigheidje, meer een schoonheidsfoutje op het UF eigenlijk.
Ik heb op de UF 2 ListBoxen die beide identiek dezelfde eigenschappen hebben in de ontwerpmodus.
Nu heb ik het volgende gemerkt :
Als ik het UF open dan blijkt de tweede ListBox net iets langer te zijn dan de eerste, doch zodra ik
in de eerste ListBox een keuze aanklik (en dus de tweede ListBox gevuld word) wijzigt de lengte van
tweede ListBox weer naar de gelijke lengte met de eerste ListBox.
Zolang de UF open blijft, dus ook na de reset van de UF, blijft de ListBox zijn correcte lengte behouden.
Het is dus echt enkel bij het openen van de UF zolang die eerste ListBox niet aangeklikt word dat de lengte
verkeerd is.

Iemand een idee wat hier de oorzaak kan zijn?

Het is niet echt een groot probleem maar zoals ik al zei is het een schoonheidsfoutje dat toch wel visueel wat storend is.

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