Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Excel-beperking mbt datum pré 1900 wegwerken met VBA  (gelezen 249323 keer)

0 leden en 1 gast bekijken dit topic.

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #60 Gepost op: 22 december 2018, 18:23:09 »
Hoi,

Hoezo 'werkje' ?
Jezelf niet onderschatten, hé BlackDevil, daar is toch heel wat tijd, geduld en concentratie aan te pas gekomen (?!)

Ondertussen heb ik toch nog een vraagje/suggestie. Ik citeer even uit je toelichtingsbestand :Elk persoon krijgt een uniek 'InternID-nr' welk als eerste dient ingevuld te worden, dit nummer dient naar elk werkblad doorgevoerd te worden.
Bij een nieuw persoon word het nieuwe nummer toegevoegd.
Bij een bestaand (te bewerken) persoon zal dit ingevoerde nummer de reeds ingegeven gegevens oproepen en vermelden in het UserForm

Vooral in "een nieuw nummer toevoegen" schuilt enig risico. Ik zou het liever automatisch laten toekennen. Ook voor een bestaand persoon (nu moet je eerst het nummer kennen) kunnen we best een meer efficiënte manier zoeken. Maar dit integreren in je hoofdformulier zou alweer wat extra knoppen betekenen, en 't staat al zo vol.

Dus wat denk je hiervan ? Je knop op het startblad (die uiteindelijk niets anders doet dan je formulier openen) vervangen we door een mini-formuliertje waar je voor 'nieuw' of 'bewerken' kiest. In geval van 'bewerken' opent een zoeklijst waarin je op verschillende manieren (nummer of naam) iemand selecteert. Daarna opent je hoofdformulier en reageert daarbij volgens de gemaakte keuze.

Maar zoals altijd : jij beslist  :)

Groetjes,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #61 Gepost op: 22 december 2018, 21:34:01 »
Hey pitufo,

Hoi,

Hoezo 'werkje' ?
Jezelf niet onderschatten, hé BlackDevil, daar is toch heel wat tijd, geduld en concentratie aan te pas gekomen (?!)

Idd, er is redelijk wat tijd, geduld en concentratie aan te pas gekomen  ;D.
Maar in vergelijking met het codeerwerk dat jullie te wachten staat vind ik dan toch wel dat dit een "werkJE" mag genoemd worden  ;).



Ondertussen heb ik toch nog een vraagje/suggestie. Ik citeer even uit je toelichtingsbestand :Elk persoon krijgt een uniek 'InternID-nr' welk als eerste dient ingevuld te worden, dit nummer dient naar elk werkblad doorgevoerd te worden.
Bij een nieuw persoon word het nieuwe nummer toegevoegd.
Bij een bestaand (te bewerken) persoon zal dit ingevoerde nummer de reeds ingegeven gegevens oproepen en vermelden in het UserForm

Vooral in "een nieuw nummer toevoegen" schuilt enig risico. Ik zou het liever automatisch laten toekennen.

Goh, hoe kan ik dit best uitleggen... dat "nieuw nummer toekennen" is eigenlijk al een bestaand nummer vanuit een ander
programma, nl. het stamboomprogramma waarin ik, in volgorde, de personen (met een uniek InternID_nr) toevoeg volgens de
volgorde dat ik ze aan mijn boek toevoeg. Mijn bestand in dat stamboomprogramma is eigenlijk een beetje een controlebestand
voor mijn boeken. Dus volgens de vermelding in mijn boeken krijgen deze personen telkens een uniek "InternID_nr".
Het excel-bestand waaraan we nu aan het werken zijn is voor mijn initieel stamboomarchief maar omdat ik elke persoon in elk
onderdeel makkelijk wil kunnen terugvinden dient in dit excel-bestand hetzelfde nummer toegekend te worden als in mijn
bestand van het stamboomprogramma, anders word het een echte "soep met ballekes"  ;D.


Hoi,

Dus wat denk je hiervan ? Je knop op het startblad (die uiteindelijk niets anders doet dan je formulier openen) vervangen we door een mini-formuliertje waar je voor 'nieuw' of 'bewerken' kiest. In geval van 'bewerken' opent een zoeklijst waarin je op verschillende manieren (nummer of naam) iemand selecteert. Daarna opent je hoofdformulier en reageert daarbij volgens de gemaakte keuze.

Maar zoals altijd : jij beslist  :)

Groetjes,
pitufo


Aanvankelijk dacht ik op het "start"-blad de knoppen "Nieuw" en "Bestaand" (of "Bewerken") te plaatsen ipv "start" maar ik vermoedde dat ik
dan 2 aparte userforms voor de invoer ging moeten ontwerpen en dat dan alles te omslachtig zou worden.

Dus jouw voorstel zie ik eigenlijk helemaal zitten  ;D.


Vriendelijke en dankbare groetjes,
BlackDevil

P.S.: Ondertussen heb ik mijn excel-bestand af (denk ik toch  :) ), dus ik hang het er even bij.
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: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #62 Gepost op: 23 december 2018, 11:24:51 »
@pitufo,

Ik heb een klein (misschien dom) vraagje.
In mijn werkbladen waarin ik gegevens uit de tabellen dien te halen heb ik meerdere formules staan.
Aangezien ik letterlijk tienduizenden records ga moeten toevoegen zou het makkelijker zijn om mijn formules
in elke cel 'op de achtergrond' (via VBA bvb) te laten uitvoeren.
Is het mogelijk om elke formule in VBA om te zetten op een wijze dat ik niet in elke cel afzonderlijk mijn formule moet plaatsen?
En zoja, zou je me dan misschien kunnen zeggen volgens welke structuur en met welke commando's ik dit moet doen?
Dan kan ik mij daarmee bezig houden terwijl jullie mijn 'formulier' programmeren, dan heb ik ook iets om handen  ;).

Om een voorbeeld te geven :

In het werkblad "_Leeftijdsberekeningen" in een bepaalde cel ("C3" in dit geval) heb ik volgende formule staan :
=ALS(Geboorten!C3="";"";ddif(Geboorten!C3;VANDAAG()))In cel "C4" dient dan =ALS(Geboorten!C4="";"";ddif(Geboorten!C4;VANDAAG()))in cel "C5" =ALS(Geboorten!C5="";"";ddif(Geboorten!C5;VANDAAG()))enz.. berekend te worden.

Kan ik dit in VBA coderen zodat ik in kolom "C" zelf geen formules meer dien te plaatsen maar dat toch elke formule
automatisch mbt de juiste cellen word uitgevoerd en liefst zonder dat ik zelf de VBA-code elke keer handmatig moet activeren?

Vriendelijke en dankbare groetjes,
BlackDevil

Update : Ik bedenk nu net iets, maar weet niet of het mogelijk is. Ipv het telkens opnieuw te moeten activeren is het misschien niet mogelijk om elke formule te laten activeren in de doelcel op het moment dat er via de UserForm een nieuwe persoon wordt toegevoegd in de bron-rij? Is maar een hersenspinseltje hoor :D ;).
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 SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.163
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #63 Gepost op: 23 december 2018, 11:59:57 »
Hallo BlackDevil,

Je formule, wat wil je daarmee bereiken? (Want daar zit een kringverwijzing in, en werkt dus niet.)

het is zeker mogelijk om in een bereik een formule te laten genereren door VBA.

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

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #64 Gepost op: 23 december 2018, 12:00:26 »
Hey BlackDevil,

Ik heb een klein (misschien dom) vraagje.
In mijn werkbladen waarin ik gegevens uit de tabellen dien te halen heb ik meerdere formules staan.
Aangezien ik letterlijk tienduizenden records ga moeten toevoegen zou het makkelijker zijn om mijn formules
in elke cel 'op de achtergrond' (via VBA bvb) te laten uitvoeren.

Ooit heb ik een verstandig iemand horen zeggen dat er geen domme vragen bestaan  ;)

Lees jij soms mijn gedachten ? Ik stond net op het punt je zelf te suggereren ALLE formules op je gegevensbladen te elimineren.
Op het ogenblik dat je invoerformulier netjes is ingevuld en je "Opslaan" kiest moet er één en ander gebeuren (onder meer gezien het aantal werkbladen), dus daarin meteen de nodige berekeningen laten uitvoeren is niet meer dan normaal. Het zou wel wat lastig worden om dat deeltje programmatie uit te besteden  0:-) (hoe graag ik ook van je hulp gebruik zou willen maken...)

Ik heb wel nog een pakketje vragen, maar best niet allemaal tegelijk.
Hier alvast een eerste lading :

Op meerdere werkbladen heb je de kolommen genummerd in rij 1. Maar ik zie je daar nergens gebruik van maken. Mogen ze dan niet weg ?

Eveneens vind ik meermaals een kolom "Hulpnr_***". Je gebruikt al "InternID_Nr" als unieke sleutel. Is Hulpnr dan wel nodig, en zo ja, waar moet het vandaan komen ? en wat moet er eventueel verder mee gebeuren ?

De rest is voor later, ik moet bijna de deur uit...

Groetjes,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #65 Gepost op: 23 december 2018, 12:13:49 »
Je formule, wat wil je daarmee bereiken? (Want daar zit een kringverwijzing in, en werkt dus niet.)

Hallo SoftAid,
De ene C3 staat op het ene werkblad, de andere C3 op het andere. Dat lijkt mij geen kringverwijzing...

Als ik iets kan helpen mag je het zeggen (een of ander vervelend routine-werkje  ;D ;D ;D )
Dat is een andere kwestie, die hou ik zeker te goed  :D

Groetjes,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #66 Gepost op: 23 december 2018, 12:56:27 »
Hey BlackDevil,

Ooit heb ik een verstandig iemand horen zeggen dat er geen domme vragen bestaan  ;)
Héhé, heb ik ook ooit iemand horen zeggen ;)

Lees jij soms mijn gedachten ? Ik stond net op het punt je zelf te suggereren ALLE formules op je gegevensbladen te elimineren.
Op het ogenblik dat je invoerformulier netjes is ingevuld en je "Opslaan" kiest moet er één en ander gebeuren (onder meer gezien het aantal werkbladen), dus daarin meteen de nodige berekeningen laten uitvoeren is niet meer dan normaal. Het zou wel wat lastig worden om dat deeltje programmatie uit te besteden  0:-) (hoe graag ik ook van je hulp gebruik zou willen maken...)

Misschien is het wel een kwestie van "great minds think alike"? :D (grapje, zo slim ben ik nu ook weer niet ;) )

Spijtig dat ik er niet bij kan helpen, zou er héél veel van kunnen leren... Maar ik begrijp je stelling wel dat het
lastig zou worden om een deel ervan uit te besteden. Dat is met vele zaken zo.

Ik heb wel nog een pakketje vragen, maar best niet allemaal tegelijk.
Hier alvast een eerste lading :

Op meerdere werkbladen heb je de kolommen genummerd in rij 1. Maar ik zie je daar nergens gebruik van maken. Mogen ze dan niet weg ?

Eveneens vind ik meermaals een kolom "Hulpnr_***". Je gebruikt al "InternID_Nr" als unieke sleutel. Is Hulpnr dan wel nodig, en zo ja, waar moet het vandaan komen ? en wat moet er eventueel verder mee gebeuren ?

De rest is voor later, ik moet bijna de deur uit...

Groetjes,
pitufo

De genummerde kolommen zijn als hulp voor in mijn "zoek"-formules op het werkblad "Personenfiche" zodat ik niet telkens moet gaan
tellen in de hoeveelste kolom er via 'vert.zoeken' moet gezocht worden.

De kolommen "Hulpnr_***" lijken overbodig te zijn maar dienen alweer voor mijn formules 'vert.zoeken' in het werkblad "Personenfiche".
Doordat de ingave van nieuwe personen niet altijd in opgaande volgorde van de "InternID_nr"'s zullen ingevoerd en dus weergegeven
worden en de 1e kolom van de bereiken voor het 'vert.zoeken' altijd in volgorde moet staan heb ik dus die kolom toegevoegd.
En aangezien de 'werk'-tabellen (lees werkbladen die via de UserForm aangevuld zullen worden) toch standaard 'verborgen' zullen
worden stoort die extra kolom niet. Die stoort mij trouwens sowieso niet.
Deze kolommen "Hulpnr_***" worden op voorhand genummerd van 1 tot (voorlopig) 25000 en dienen dus louter om de formules in het
werkblad "Personenfiche" correct te laten werken.

Extra Nota : De formules in het werkblad "Personenfiche" zijn vaste "zoek"-formules en dienen niet opgenomen te worden in de VBA-code.
Het zijn vooral de formules in het werkblad "_Leeftijdsberekeningen" en in de werkbladen "Idxlst_bk01" tem "Idxlst_bk25" (later nog
uit te breiden tot "Idxlst_bk50" of meer aangezien ik meer dan 50 boeken zal (dienen te) schrijven) die moeten opgenomen worden
omdat het 'berekenings'-formules zijn die in elke rij wijzigen.

Stuur de volgende lading vragen maar ;).


Vriendelijke en dankbare 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: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #67 Gepost op: 23 december 2018, 13:11:22 »
@pitufo,

Even een belangrijke nota inzake de weergave in de werkbladen "Idxlst_bk**".
Het is dus de bedoeling dat enkel de personen die in het betreffende boek vermeld zijn, ook in de betreffende indexlijst worden opgenomen.
Vandaar dat ik op het UserForm zowel een aanvinkvakje als een invoerveld heb vermeld bij elk boek.
Wanneer bvb persoon A vermeld is in boek01 en boek02 dient dit aangevinkt te worden in het UserForm met daarnaast het betreffende paginanummer waarop deze persoon vermeld is.
Persoon A zal dus enkel in de indexlijsten van boek01 en boek02 mogen opgenomen worden en dus niet in al die andere indexlijsten.
Ik hoop dat het coderen hiervan mogelijk is en niet té omslachtig zal worden?...

Vriendelijke en dankbare 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 pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #68 Gepost op: 23 december 2018, 20:37:59 »
Hallo BlackDevil,

Er zijn zo van die dingen die op volkomen onbegrijpelijke manier een uitstekende reputatie verwerven en nadien nooit meer kwijtraken. Dat kunnen merken van broodbakmachines, groentesoorten, BV's, enz. zijn, maar ook Excel-functies.
Iedereen blijft altijd maar weer vert.zoeken gebruiken terwijl die toch heel wat tekortkomingen (je hebt het zelf eigenlijk al aangegeven) kent : vooral het feit dat de vergelijkingskolom de meest linkse in je zoekgebied moet zijn, de zoekkolom zich bijgevolg rechts ervan moet bevinden, en (de belangrijkste) dat er op die vergelijkingskolom gesorteerd moet zijn als je een exacte overeenkomst wil vinden (wat overigens meestal het geval is).

Mijn advies luidt : weg ermee bij zoeken naar een exacte overeenkomst. In jouw document kan dat ook betekenen : weg met de bovenste rij en met de nummering in de eerste kolom.
Het uiterst vereenvoudigde voorbeeldje hierbij zal dat duidelijk maken. De formules in "Personenfiche" lijken iets complexer, maar de nadruk moet hier echt op LIJKEN liggen. Ik heb 3 ID-nummers genomen die niet gesorteerd staan. In de formules staan ook geen rij- of kolomnummers, m.a.w. je ziet meteen wat de formule precies doet. Ik twijfel er niet aan dat jij de andere op gelijkaardige wijze weet aan te passen.
Kijk ondertussen ook even naar de gedefinieerde naam "IdxPers" : die stopt op deze manier niet meer op een gekozen rij.
Kies ook eens een vals ID-nr. Dan zal je 2 verschillende resultaten zien bij Naam en Voornaam. Het hoeft niet bij die 2 te blijven om uit te kiezen, dat merk je wel aan de formules.

Ik vraag me overigens af hoe jij aan het nummer komt om een Personenfiche mee te maken als je uit een lijst van duizenden personen iemand wil selecteren. Op één van de werkbladen die naam gaan zoeken en het bijhorende nummer kopiëren of invullen, wellicht ?
Met het ID-nr dat ik als voorbeeld heb genomen winnen we op dat vlak wel niets, maar we zouden wel een zoekfunctie kunnen toevoegen.

Och ja, je wil uiteraard ook de reden van deze bedenkingen kennen. Wel, ik heb al meermaals begrepen dat je een degelijk werkend systeem wil verkrijgen, maar tegelijk ook zoveel mogelijk bijleren over Excel. Dan zou dit een goede "oefening" zijn.
En 't heeft ook een egoïstisch kantje : ik werk veel liever aan een volwaardig (minstens tot op zekere hoogte) Excel-model.

En dus zou ik nog een bommetje durven gooien. Ik was namelijk een beetje verbaasd te lezen dat de werkbladen met gegevenstabellen meestal verborgen zullen zijn, en je er dus zelden gaat in rondneuzen. Tegelijk is het blijkbaar de bedoeling (?) dat de eerste 6 werkbladen altijd evenveel records zullen tellen en in dezelfde volgorde en met hetzelfde ID. Waarom dan niet op één werkblad ?

Je ziet het, nog een aantal zaken definitief te beslissen alvorens één regel code te schrijven...

En wees maar gerust dat er nog andere bedenkingen volgen, maar 't zullen wel altijd suggesties blijven, ik wil mijn wil niet opleggen...

Groetjes,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #69 Gepost op: 23 december 2018, 22:04:39 »
Hey pitufo,

Vooreerst zal ik misschien uitleggen adhv welk nummer ik de gegevens ophaal in de personenfiche's.
Het nummer dat ik ingeef om te zoeken is het SOSA-nr.
Zoals ik in één van mijn eerste berichten in dit topic reeds meegaf is het SOSA-nr een speciaal genealogisch nummer.

Als ik mijn stamboom maak dan ben ik SOSA 1, mijn vader is dan SOSA 2 en mijn moeder is SOSA 3.
De vader van mijn vader is SOSA 4 en de vader van mijn moeder is SOSA 6.
enz...
De vaders hebben altijd een sosanr dat 2x het sosanr is van het kind, de moeders het dubbel van het kind + 1.

SOSA-nummering in rechte vaderlijke lijn zal dus voor mij het volgende zijn : 1, 2, 4, 8, 16, 32, 64, 128, 256, enz...

Niet elke persoon in mijn boek en dus gegevensbestand beschikt over een SOSA-nr wat betreft mijn stamboom, vandaar
het InternID_nr.
Anderzijds dien ik ook enkel maar van de personen die wél een SOSA_nr hebben een personenfiche af te drukken
omdat ik enkel van die personen (mijn rechtstreekse voorouders dus) een papieren archief bijhoud.
Van de andere personen hou ik gewoon alles digitaal bij met uitzondering dan van de vermelding in mijn boeken.


Wat het verborgen zijn van de tabellen betreft is dit eigenlijk enkel maar voor de anderen die met mijn bestand zullen werken
(mijn 12-jarige dochter bijvoorbeeld helpt mij graag mee en data-invoer doet ze héél graag), voor mij zullen de tabellen
niet verborgen zijn.
Hiermee antwoord ik dan ook direkt op jouw vraag, "waarom niet één werkblad?"
Ik werkte aanvankelijk met 1 werkblad en dan had ik +40 kolommen wat zéér onoverzichtelijk was, vandaar dat ik dat ene
werkblad heb opgesplitst in meerdere werkbladen, voor elk onderdeel een werkblad omdat ik wel de tabellen wil kunnen
raadplegen en het dan handiger werkt met meerdere werkbladen. Als ik overlijdensgegevens moet hebben ga ik gewoon
naar het werkblad "Overlijdens" en zie ik onmiddellijk de gegevens die ik nodig heb.
Als ik maar één werkblad zou gebruiken dan moet telkens mijn werkblad via de scrollbalk opschuiven om de juiste kolommen
te kunnen raadplegen.


Ivm het vert.zoeken weet ik dat er efficiëntere formules bestaan maar ik ben nog niet zo goed in de formules en zeker met geneste
formules is het vaak uren denken en proberen maar met de formule vert.zoeken heb ik wel redelijk wat ervaring dus, zeker als ik in
een periode zit met weinig focus-vermogen (zoals nu ook het geval is), kies ik al snel voor de formule waarbij ik het minst moet
nadenken  ;D. Dus ja, de formule in jouw voorbeeld werkt een stuk efficiënter en aangezien ik graag een goed werkend en doordacht
systeem wens zal het gebruik van jouw formule in dit geval beter zijn. ;)

En vraag er maar gerust op los hoor, hoe meer duidelijkheid er is naar jou toe, hoe beter jij zal kunnen coderen hé ;).

Vriendelijke en dankbare 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 pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #70 Gepost op: 24 december 2018, 09:42:36 »
Hallo BlackDevil,

 :-[ Ook als niemand me op mijn fouten wijst zal ik moeiteloos (in dat geval spontaan) mea culpa slaan.
Gisteren ben ik op amper een namiddag tijd geëvolueerd van kerngezond tot een soort grieptoestand met > 39° koorts. Ik had dus beter de verleiding om nog iets te willen doen meteen verworpen. Bovendien durf ik het enkel inroepen als verzachtende omstandigheden van laag gehalte, m.a.w. ik pleit schuldig  :'(

Ik denk te mogen stellen dat ik de functie vert.zoeken door en door ken, en ze dus zonder enige vorm van nadenken  0:-) kan gebruiken. Eveneens zonder nadenken heb ik dus gisteren je idee dat een lijst moet gesorteerd zijn simpelweg overgenomen. Terwijl het net andersom is : die noodzaak doet zich enkel voor bij benaderend zoeken.

Oef, dat moest even van mijn maag  ;)

Bizar genoeg  :D zat er in de rest van mijn betoog ('k heb het net nog eens nagekeken - je weet maar nooit) wel de gewenste logica.
Want de combinatie index/vergelijken is nu eenmaal beter : sneller, duidelijker én veelzijdiger.

OK, ik ben mee in de gedachte achter de verschillende werkbladen. Maar het klopt dan toch dat "Personen" tot en met "Boeken" altijd synchroon moeten blijven (iedereen die op één van die werkbladen staat staat ook op alle andere) ?

Het mogelijk risico dat ik daar in zag was dat er per ongeluk (een milliseconde concentratieverlies kan voldoende zijn) op één van die werkbladen een rij zou worden verwijderd, dan zijn de gevolgen funest.
Gelukkig kent vba de mogelijkheid om alles zodanig in te stellen dat vba zelf wel nog wijzigingen kan aanbrengen maar de gebruiker niet.

Het SOSA-nummer is nu ook duidelijk geworden. Maar die ken je toch niet allemaal uit het hoofd (uit vele duizenden records) ?
Ook als je daar geen overmatige inspanningen moet voor doen om dat te vinden, ik zou het toch liever op een meer Excelachtige wijze op je Personenfiche zien terechtkomen. Zodra ik tijd vind zal ik eens een iets uitgebreider voorbeeld maken, dat zal meer zeggen dan 1000 woorden  ;D

Feit is dat er, nu we het over de structuur van de meeste werkbladen eens zijn, er al een gedeelte code kan geschreven worden. Misschien wachten we beter tot die geëvalueerd is vooraleer aan extra aanpassingen te gaan denken (?)
Ondertussen zou het wel nuttig zijn als je nog eens een bestand toevoegt zonder beveiliging op sommige werkbladen...

Ach ja, mijn Personenfiche-formule. Haar 'input' is een zoekgebied (hier een gedefinieerde naam) en 2 waarden die moeten gezocht worden (enerzijds het Index-nr (maar dat kan eender wat zijn, als je het maar vooraf bepaalt), in jouw bestand dus de verwijzing N5, en anderzijds de letterlijke tekst, bv. "Naam"). Op basis daarvan zoekt de formule eerst rij en kolom en retourneert de waarde die zich bevindt op het snijpunt daarvan. Nog voor het jaareinde speel jij met deze formule alsof je nooit iets anders gedaan hebt, denk ik zo.

De formules in het werkblad "Personenfiche" zijn vaste "zoek"-formules en dienen niet opgenomen te worden in de VBA-code.
Het zijn vooral de formules in het werkblad "_Leeftijdsberekeningen" en in de werkbladen "Idxlst_bk01" tem "Idxlst_bk25" (later nog
uit te breiden tot "Idxlst_bk50" of meer aangezien ik meer dan 50 boeken zal (dienen te) schrijven) die moeten opgenomen worden
omdat het 'berekenings'-formules zijn die in elke rij wijzigen.

Met de formules in "Personenfiche" kan ik leven, maar op de andere werkbladen zou ik resoluut alle formules elimineren !
Het kan, maar die lijsten worden telkens langer, en dan moeten we vba extra formules op je werkbladen laten zetten. Dat is evenveel, om niet te zeggen méér, werk dan er meteen het berekende resultaat te zetten. En ook nadien, hoe minder formules in je bestand, hoe minder werk Excel heeft.

Wordt dus (allicht meermaals  ;D ) vervolgd...

Groetjes,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #71 Gepost op: 24 december 2018, 11:05:41 »
Hallo BlackDevil,
OK, ik ben mee in de gedachte achter de verschillende werkbladen. Maar het klopt dan toch dat "Personen" tot en met "Boeken" altijd synchroon moeten blijven (iedereen die op één van die werkbladen staat staat ook op alle andere) ?
Idd, zodra er via de UserForm een (voor het excel-bestand) nieuw InternID_nr wordt ingevoerd, wordt er op elk werkblad ("Personen" tem "Boeken") een
nieuwe rij toegewezen aan dat betreffende InternID_nr.

Het mogelijk risico dat ik daar in zag was dat er per ongeluk (een milliseconde concentratieverlies kan voldoende zijn) op één van die werkbladen een rij zou worden verwijderd, dan zijn de gevolgen funest.
Dient daar dan de functie "werkblad beveiligen" niet voor om zulke dingen te voorkomen?

Gelukkig kent vba de mogelijkheid om alles zodanig in te stellen dat vba zelf wel nog wijzigingen kan aanbrengen maar de gebruiker niet.
Ik vrees dat dat geen optie mag zijn aangezien ik zelf, indien nodig, nog iets wil kunnen doen in de werkbladen.
Ook zal ik regelmatig al eens moeten laten sorteren op een bepaalde kolom ed.
Ik wil trouwens nog enige controle over en bewegingsruimte in mijn bestand behouden :).

Het SOSA-nummer is nu ook duidelijk geworden. Maar die ken je toch niet allemaal uit het hoofd (uit vele duizenden records) ?
Ook als je daar geen overmatige inspanningen moet voor doen om dat te vinden, ik zou het toch liever op een meer Excelachtige wijze op je Personenfiche zien terechtkomen. Zodra ik tijd vind zal ik eens een iets uitgebreider voorbeeld maken, dat zal meer zeggen dan 1000 woorden  ;D
Deze hoef ik ook niet uit mijn hoofd te kennen omdat deze "Personenfiches" in principe maar éénmalig dienen afgedrukt te worden
zodra ik alle gegevens over die betreffende persoon heb en dat is dan vlak nadat ik het record voor die persoon heb toegevoegd of
bijgewerkt, dus dan weet ik welk SOSA_nr ik moet ingeven.
En omdat ik soms al eens tussendoor ook een "Personenfiche" moet raadplegen en ik sowieso op voorhand weet welk SOSA_nr daar
bij hoort wil ik dit wel héél graag handmatig blijven invullen.

Ondertussen zou het wel nuttig zijn als je nog eens een bestand toevoegt zonder beveiliging op sommige werkbladen...
Ok, zal ik eventjes doen. Ik had deze beveiliging er gewoon opgezet om zeker te zijn dat mijn ingebrachte formules op de juiste plaats bleven staan zodat de VBA-codeurs zouden weten welke bewerkingen er in die specifieke cellen dienden uitgevoerd worden.

Met de formules in "Personenfiche" kan ik leven, maar op de andere werkbladen zou ik resoluut alle formules elimineren !
Dat was toch uiteindelijk de bedoeling dacht ik? Vandaar dat ik gevraagd had of het mogelijk was om de nodige berekeningen via
VBA te kunnen laten uitvoeren.


Vriendelijke en dankbare 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: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #72 Gepost op: 24 december 2018, 11:18:00 »
@pitufo,

Bij deze mijn gegevensbestand zonder de beveiliging.


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: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #73 Gepost op: 24 december 2018, 12:45:51 »
@pitufo,

Ik heb me eens even aan het bestuderen van jouw formule, voor de personenfiche, gezet en heb de formules voor
naam, voornaam, geslacht en beroep aangepast volgens hoe ik de formule begrepen heb.
Ik hang het aangepaste bestandje even aan zodat je eens kan kijken of ik de formule goed geïnterpreteerd heb :D.


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 pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Excel-beperking mbt datum pré 1900 wegwerken met VBA
« Reactie #74 Gepost op: 24 december 2018, 13:06:40 »
Hallo BlackDevil,

Even wat misverstandjes opruimen :

Dient daar dan de functie "werkblad beveiligen" niet voor om zulke dingen te voorkomen?
Ergens wel, maar als je het werkblad manueel beveiligt (met standaard AAN), moet vba telkens de beveiliging opheffen om er te kunnen schrijven, en ze daarna weer aanzetten. Als je het zo instelt dat vba kan schrijven en de gebruiker niet kan je, wanneer nodig, toch nog altijd zelf de beveiliging tijdelijk uitzetten. Maar een heel groot verschil maakt het allemaal niet.

Ik vrees dat dat geen optie mag zijn aangezien ik zelf, indien nodig, nog iets wil kunnen doen in de werkbladen.
Die is dan meteen ook uitgeklaard door de vorige verduidelijking. Maar ik zie dat je een beetje schrik krijgt om TE veel te veranderen, dus laten we het (voorlopig) maar bij het oude houden.

En omdat ik soms al eens tussendoor ook een "Personenfiche" moet raadplegen en ik sowieso op voorhand weet welk SOSA_nr daar
bij hoort wil ik dit wel héél graag handmatig blijven invullen.
Ik zal het niet kunnen laten, dus meer dan een kleinigheid zal ik daar niet aan veranderen...

Met de formules in "Personenfiche" kan ik leven, maar op de andere werkbladen zou ik resoluut alle formules eliminerenDat was toch uiteindelijk de bedoeling dacht ik?
Ik zou het in elk geval met klem hebben aangeraden, maar er kon twijfel over bestaan voor wie dit letterlijk las :
Ipv het telkens opnieuw te moeten activeren is het misschien niet mogelijk om elke formule te laten activeren in de doelcel op het moment dat er via de UserForm een nieuwe persoon wordt toegevoegd in de bron-rij?
Ook opgelost dus !

Groetjes,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

 


www.combell.com