Help!

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

Hulp bij posten

Recente topics

Auteur Topic: VBA opmaak bepalen van weg te schrijven (tekst)-waarden  (gelezen 5322 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Gepost op: 06 april 2021, 06:47:51 »
Hallokes beste helpers/experten,

Omdat mijn oorspronkelijk bestand nogal omslachtig was met gigantisch veel userforms en vba-code en er toch nog enkele 'foutjes' zaten in de correcte werking ervan had ik besloten om helemaal opnieuw te beginnen zonder userforms en een beperktere werking van het hele bestand.
De algemene code voor mijn huidig bestand is (voorlopig) af, het enige wat me nu nog rest is de afwerking inzake opmaak.
Algemene uitleg werking bestand :

Het betreft een bestand ter 'hulp' in mijn genealogisch onderzoek.

Ik heb drie indexeringstabellen (geboorten - huwelijken - overlijdens) die handmatig gevuld worden adhv gevonden aktes uit officiële archieven.
Dan heb ik een 'totaal'-tabel waarin VBA alle gegevens uit die drie indexeringstabellen adhv diverse voorwaarden samenvoegt.
Vervolgens heb dan het werkblad 'GEZIN' waarin door VBA in een bepaalde 'format' de gezinnen worden samengesteld (in standaard tekst-opmaak) op basis van de gegevens uit de 'totaal'-tabel.
Dit werkt allemaal prima zoals het hoort.

Nu zou ik héél graag die 'gezinsreconstructies' in een specifieke tekst-opmaak laten samenstellen, alleen heb ik geen idee hoe ik dit kan verwerken in mijn huidige code voor de samenstelling van de gezinnen (zie module 'mod_gezinnen').
Dus hoop ik dat iemand van jullie mij hierbij wil/kan helpen.

Ik heb in het werkblad 'GEZIN', naast de oorspronkelijke samenstelling, een voorbeeld geplaatst van hoe ik de tekst-opmaak graag zou hebben.

Alvast mijn oprechte 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 opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #1 Gepost op: 06 april 2021, 11:13:24 »
Zo ?,  opmaak nu in rood en vetgedrukt.
Wijzigingen in Sub test staan tussen groene *******************************
Groet,

Albert

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #2 Gepost op: 06 april 2021, 12:12:21 »
Hey Albert,

Alweer heb je mij op de goede weg geholpen met jouw bijdrage  _/-\o_
Hierdoor wist ik exact waar en via welke structuur ik de nodige aanpassingen moest maken waardoor ik ook het cursief en onderlijnde gedeelte heb kunnen toevoegen. Uiteraard ook de kleur in het zwart gehouden gezien het enkel vet moest zijn (maar het rode was natuurlijk om onmiddellijk zichtbaar te maken waar het gewijzigd was veronderstel ik  ;) ).

De opmaak is nu exact hoe ik hem wou. Alweer wat bijgeleerd.  :thumbsup:

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 SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #3 Gepost op: 06 april 2021, 12:36:42 »
Hallo BlackDevil,

ik had ook wat zitten testen, en kwam ook tot een goed resultaat, maar op een andere (langere) manier dan Albert:
            'man invullen
            Tekst = naam & " " & voornaam
            If g_dat <> "" Then Tekst = Tekst & ", °" & g_dat & " te " & g_plaats
            If o_dat <> "" Then Tekst = Tekst & ", †" & o_dat & " te " & o_plaats
            Cells(rij, kolom) = Tekst & "."
'-------------------------------------------------------------------------------------
            Cells(rij, kolom).Activate
            Dim LPosition As Integer
            LPosition = InStr(ActiveCell.Value, ",")
            With ActiveCell.Characters(Start:=1, Length:=LPosition).Font
                .FontStyle = "Bold"
                .Underline = xlUnderlineStyleSingle
            End With
'----------------------------------------------------------------------------------
            rij = rij + 1

Het deel tussen streepjes zoekt na het plaatsen van de Tekst [tekst] de positie van komma na de namen, selecteert dan de string in die tekst van begint tot de lengte t.e.m de komma, en maakt deze "Bold" en Underlined.

Fraaie code voor een beginner als mij, en het nodige zoekwerk, maar die van Albert is dus vééééél beter  ;D ;D ;D

zie bijlage

Groeten,

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

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #4 Gepost op: 06 april 2021, 14:59:04 »
Theo,

Niet zo negatief over jezelf. Ik vind jouw code beter. :thumbsup:
toch nog een kleine opmerking: Vermijd zoveel mogelijk ACTIVATE (die opmerking heb ik zelf ook vaker gekregen)

     Dim LPosition As Integer
     LPosition = InStr(Cells(rij, kolom), ",")
            With Cells(rij, kolom).Characters(Start:=1, Length:=LPosition).Font
                .Bold = True
                .Underline = xlUnderlineStyleSingle
            End With

update: kan wel nog fout gaan als er geen komma direct achter de naam staat.
Groet,

Albert

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #5 Gepost op: 06 april 2021, 15:08:23 »
Dank je wel Albert,

maar als het werkt dan durf ik niet veel meer te veranderen.
Ik kijk dan niet op een lijntje code meer of minder, als het maar werkt  ;).
Maar je hebt volkomen gelijk: onnodige zaken kan je beter weglaten.

Aléé, nu heeft BlackDevil de keuze  ;D ;D ;D

Groeten,

Theo

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

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #6 Gepost op: 06 april 2021, 15:10:13 »
of zo zonder komma. (nog niet getest)
      Dim LPosition As Integer
      LPosition = Len(naam & " " & voornaam)
            With Cells(rij, kolom).Characters(Start:=1, Length:=LPosition).Font
                .Bold = True
                .Underline = xlUnderlineStyleSingle
            End With
Groet,

Albert

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #7 Gepost op: 07 april 2021, 07:25:05 »
Hey Theo en Albert,

Vooreerst dank aan beide voor de hulp.

Theo, zoals Albert zegt, jezelf zeker niet onderschatten, ben zelf ook nog een beginneling maar de code die jij daar in elkaar hebt gepuzzeld zou mij met mijn huidige kennis nooit gelukt zijn.
Anderzijds ben ik ook zoals je over jezelf zegt, eens het werkt durf ik er ook niet meer in te prutsen, ben al blij dat ik het werkend heb gekregen dat de uiteindelijke hoeveelheid code mij ook totaal niet stoort. Zolang ze maar werkt en ik ze ook degelijk begrijp, voor ingeval er ooit iets gewijzigd moet worden, ben ik tevreden.
Ik ga het dan voorlopig ook houden bij de huidige code omdat ik ze goed begrijp en ze exact doet wat ik wou.
Vooral omdat er blijkbaar toch nog aanzienlijk foutjes blijken te zitten in mijn hoofd-code om alle gegevens samen te voegen naar de totaal-tabel en ik dus aldaar nog constant, al dan niet succesvolle, wijzigingen moet maken.

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

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #8 Gepost op: 07 april 2021, 09:57:13 »
Hallo BlackDevil,

Nagel op de kop !!  8)

succes verder met de code, en als er iets is waar je graag hulp bij krijgt dan horen we het wel  ;)

Groeten,

:) 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.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #9 Gepost op: 07 april 2021, 10:40:45 »
Hey SoftAid,

Bedankt.
En nu je het zegt, er zijn eigenlijk wel een aantal puntjes voor het huidige project waar ik nog wel wat hulp zou kunnen gebruiken.
Enerzijds puur code-gericht maar anderzijds ook logica-gericht. Omdat ik nog geen 5% ken van alle mogelijkheden binnen VBA is het nogal lastig voor mij om het logica-gerichte deel van mijn project op punt te zetten. Ik heb de code nu dusdanig opgesteld volgens mijn beperkte kennis maar het is dus niet helemaal wat het moet zijn.
Maar omdat ik vermoed dat het 'denkproces (omzetten naar code)' niet bij de taak van de helpers hier hoort heb ik dus mijn hulp-vraag daaromtrent nog niet durven stellen.

Indien ik een flow-chart zou maken van het volledige proces, zou ik dit dan hier mogen plaatsen zodat ik dan hulp kan vragen voor het omzetten ervan naar een goede efficiënte en correct gestructureerde code?

Verder heb ik sowieso één onderdeel dat mij een beetje in problemen brengt bij de uitvoer van het laatste onderdeel, de samenstelling van de gezinsreconstructies. Zoals jullie weten verwerkt excel geen datum pré 1900. Om dit, met mijn beperkte kennis van VBA, op te vangen heb ik ervoor gekozen om de handmatige invoer van de datums te verdelen over drie kolommen. Omdat ik graag als format dd-mm-jjjj gebruik had ik de kolommen voor dag en maand als tekst-notatie geplaatst (om ervoor te zorgen dat deze altijd met 2 tekens word weergegeven) in mijn indexeringstabellen.
In mijn code voor het samenstellen van de totaal-tabel had ik de waarden uit de drie kolommen laten samenvoegen als  dag & "-" & maand & "-" & jaar. In principe werkt dit natuurlijk allemaal wel maar voor de gezinsreconstructies is het natuurlijk wel de bedoeling dat de kinderen in chronologische volgorde vermeld worden maar doordat de datum als tekst verwerkt word staan de kinderen dus niet in chronologische volgorde. Dus eigenlijk zou ik de basis van de datum-invoer moeten aanpassen. Maar ik heb dus totaal geen idee hoe ik die notatie en/of datums pré 1900 moet gaan verwerken in VBA.

Als het ok is ivm die flow-chart zal ik deze aanmaken en hier plaatsen.
Alvast dank.

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 SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #10 Gepost op: 07 april 2021, 11:01:35 »
Hallo BlackDevil,

natuurlijk mag je een flow-chart plaatsen. alles wat helpt jou te helpen mag  ;D
Als je raad wenst in VBA-code, dan moet je ook zeker een voorbeeldbestand (met liefst zo weinig mogelijk data) met de VBA code (liefst alles) plaatsen. Zet in de code duidelijk (voor ons) waar de regels voor dienen (maar dat deed je al) en wat je wenst.

Succes.

:) 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.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #11 Gepost op: 07 april 2021, 11:33:19 »
Hey SoftAid,

Super dat ik dit mag doen!  :thumbsup: _/-\o_

Ik maak er onmiddellijk werk van (heb al 1/3e van de flow-chart af  ;D) en dan hang ik hier het bestand opnieuw aan.
Wat de data betreft zal ik het proberen te beperken tot diegene mbt elke mogelijke situatie die een verschillende handeling vraagt.


Alvast al een hele hele dikke merci 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 opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #12 Gepost op: 07 april 2021, 12:17:29 »
Ik heb me niet verder verdiept in de hele code's, maar je zou van de datums een getal kunnen maken.
Misschien kun je daar dan wel wat mee.
Groet,

Albert

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #13 Gepost op: 07 april 2021, 13:34:09 »
AD1957, volgens mij is dat best gebruikelijk bij stamboom onderzoek. Je maakt een getal aan met de opmaak yyyymmdd en houdt die bij in een hulpveld. Zo kan je uitstekend sorteren en klopt de volgorde altijd.
Ik heb van Google even een stukje sterrenkalender gehaald en een deel in Excel gezet met daarachter een voorbeeld van zo'n "getal"
 Verjaardag "Rosey" / Matthew Anoaʻi (1970), Sport.    Meer informatie    19700407
 Verjaardag Adrián Beltré (1979), Sport.    Meer informatie                    19790407
 Verjaardag Agha Saleem (1935), Auteur.    Meer informatie                    19350407
 Verjaardag Ajith Kollam (1962), Film / toneel.    Meer informatie            19620407
 Verjaardag Alan J. Pakula (1928), Film / toneel.    Meer informatie    19280407
 Verjaardag Albert O. Hirschman (1915), Wetenschap.    Meer informatie 19150407
 Verjaardag Aldo Bufi Landi (1923), Film / toneel.    Meer informatie    19230407
 Verjaardag Alexa Demara (1989), Film / toneel.    Meer informatie    19890407
 Verjaardag Alexander Karpovtsev (1970), Sport.    Meer informatie    19700407
 Verjaardag Alexis Jordan (1992), Muziek.    Meer informatie                    19920407
 Verjaardag Alick Downer (1910), Politiek / overheid.    Meer informatie  19100407
 Verjaardag Andrew Sachs (1930), Film / toneel.    Meer informatie    19300407
 Verjaardag André Landzaat (1943), Film / toneel.    Meer informatie    19430407
 Verjaardag Andy Hampsten (1962), Sport.    Meer informatie            19620407
 Verjaardag Angelo Caroli (1937), Sport.    Meer informatie                    19370407
 Verjaardag Ans Coppen (1913), Film / toneel.    Meer informatie            19130407
 Verjaardag Anthony Caruso (1916), Film / toneel.    Meer informatie    19160407
 Verjaardag Antonio Piccolo (1988), Sport.    Meer informatie                    19880407
 Verjaardag Arjen van der Meulen (1987), Sport.    Meer informatie    19870407
 Verjaardag Arnie Robinson (1948), Sport.    Meer informatie                    19480407
 Verjaardag Babatunde Olatunji (1927), Muziek.    Meer informatie            19270407
 Verjaardag Billie Holiday (1915), Muziek.    Meer informatie                    19150407

Dat lijkt me toch prima te doen?
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA opmaak bepalen van weg te schrijven (tekst)-waarden
« Reactie #14 Gepost op: 07 april 2021, 14:03:03 »
Hallo RedHead,

Voor zover ik zie is  stelling de die AD1957 voorstelt dezelfde als die van jou..
En ik weet dat dit al voorgesteld is (en ik dacht ook gebruikt) in eerdere topics rond het Genealogie-project van BlackDevil: https://www.oplossing.be/excel/excel-beperking-mbt-datum-pre-1900-wegwerken-met-vba/msg239302/#msg239302

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

 


www.combell.com