Hét vraag- en antwoordplatform van Nederland

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.

Verwijderde gebruiker
10 jaar geleden
in: Software
1.4K

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Antwoorden (2)

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.
 
(Lees meer...)
Cryofiel
10 jaar geleden
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.
(Lees meer...)
Verwijderde gebruiker
10 jaar geleden

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding