Hoe kan je ervoor zorgen dat je in VBA zorgt dat er in Excel steeds een andere tekst verschijnt?

Dus dat je een lijst met woorden/zinnen maakt en dat Excel dan elke keer dat je het bestand opent een willekeurige tekst kiest.

Weet jij het antwoord?

/2500

Als je je lijst met zinnen ook in Excel zet, is dat heel eenvoudig. Dan kan het namelijk gewoon met een Excel-formule, en heb je geen VBA nodig. Voor mijn voorbeeld ga ik ervan uit dat je je voorbeeld zinnen op het tweede werkblad van je werkboek zet, en dat dat tweede werkblad de standaardnaam 'Blad2' heeft. De zinnen staan van boven naar beneden. Als je 100 zinnen hebt, staan die in de cellen A1 t/m A100. Op de plek waar je je willekeurige zin wilt laten verschijnen, zet je nu de volgende formule: =VERSCHUIVING(Blad2!A1; ASELECTTUSSEN(0; 99); 0) Dat getal 99 in de formule is het aantal zinnen (100) min 1. Elke keer wanneer je dit bestand opent, zal de formule een willekeurige zin uit het lijstje laten zien.  

Ik neem nu even aan dat al deze "zinnen" onder elkaar staan, dus in één kolom en een vast aantal rijen, om het antwoord simpel te houden. In de Workbook module kan je een procedure (gewoon een stuk code dat in dit geval triggert als het Workbook wordt geopend) maken. In deze procedure moet dus een willekeurige cel uit die range met "zinnen" worden geselecteerd. Dit kan op heel veel manieren. Één manier is: Dim rand As Integer '(als het aantal rijen binnen de grenzen van Integer past) Dim str As String rand = Int(Rnd * 50) '(50 is hier het aantal rijen met zinnen) str = Blad1.Range("A1").Offset(rand).Text '(waarbij Blad1 is De OBJECTNAAM van het blad waarin de zinnen staan en A1 de cel waarin de eerste zin staat) 'I.p.v. Blad1 (objectnaam) kan je ook Sheet("naam zichtbaar in excel op het tabblad") gebruiken. Dit raad ik af omdat die naam makkelijk kan veranderen. 'Op dit moment is str een variabele met daarin een willekeurige zin uit de eerste 50 rijen van kolom A van Blad1. Hopelijk is dit wat je zoekt. Ter vergelijking met het eerste antwoord dat werd gegeven: aangezien daar een formule wordt gebruikt, zal bij iedere wijziging in het bestand een nieuwe zin worden gekozen omdat formules dan worden herberekend (zo ook ASELECT(TUSSEN)). In deze VBA code wordt alleen een zin gekozen zodra het bestand wordt geopend.

Bronnen:
Eigen ervaring

Stel zelf een vraag

Ben je op zoek naar het antwoord die ene vraag die je misschien al tijden achtervolgt?

/100