Ga naar inhoud

Aanbevolen berichten

Geplaatst:

Hello,

Ik probeer een eenvoudige opteloefening te maken in excel.

 

Hierbij gebruik ik de functie "aselecttussen() om de getallen te kiezen volgens moeilijkheidsgraad. Tot hier zijn geen problemen.

 

Maar als ik via de macro een nieuwe opdracht wil invoeren geeft hij steeds andere getallen in het tweede macrogedeelte.

 

Mijn werkwijze : 'Opnemen macro / Kopieer de eerste getallen / Ga in de oefening / Doe plakken speciaal / Waarde'.

Ga terug naar de tweede reeks getallen, kopieer die en ga terug in de oefening en plak de getallen op de zelfde wijze plakken speciaal waarde.

Als ik nu de macro uitvoer geeft die de getallen die in de eerste te kopiëren kolom stonden terug in de oefening, maar de tweede reeks komen de getallen niet overeen met de oorspronkelijk gekopieerde getallen.

 

Heeft iemand mij daar een verklaring voor en hoe kan ik dit oplossen.Rekenoefeningen.xlsm

 

MVG

Geplaatst: (aangepast)

@jetu,

wat jij wil gaat niet op de manier zoals met de macro in jouw bestand.

De reden is dat =aselecttussen() een volatilefunctie is die bij elke wijziging in het blad opnieuw wordt berekend (dus bv. ook als in kolom J de uitkomsten zouden worden ingevuld).

Nu je toch een macro wil gebruiken is er een eenvoudige oplossing mogelijk door de getallen in de A- en B-kolom niet in het blad maar door de macro te laten berekenen. Als je niet de formule maar alleen de uitkomsten in de A- en B-kolom plaatst, wijzigen die niet meer als je elders in het blad wat doet. Dat kan bv. zo:

Option Explicit
Sub macro1()
Dim x As Integer
With Sheets("Blad1")
For x = 9 To 13
.Range("A" & x).Value = Application.RandBetween(0, 5)
.Range("B" & x).Value = Application.RandBetween(0, 5)
.Range("F" & x).Value = .Range("A" & x).Value
.Range("H" & x).Value = .Range("B" & x).Value
Next x
End With
End Sub
Je kunt natuurlijk de berekende getallen ook meteen in de F- en H- kolom plaatsen en de A- en B-kolom weglaten.
En tenslotte kun je ook de moeilijkheidgraad van de opgaven eenvoudig aanpassen door de macro naar de hoogste en laagste waarde van de getallen in de A- en B-kolom te laten vragen.
aangepast door alpha
Geplaatst:

Jetu,

 

Ik heb de berekende getallen in de F- en H-kolom kunnen plaatsen zodat ik de A- en B-kolom kon verwijderen.

Maar hoe ik de moeilijkheidsgraad van de opgave kan aanpassen, door de makro naar de hoogste en laagste waarde van de getallen te laten vragen weet ik helemaal niet.

Kun je me dat even gedetailleerd uitleggen a.u.b.

 

Mvg

Geplaatst:

Dat kan m.b.v. een inputbox, die behoort tot de basisbeginselen van vba.

Option Explicit
Sub macro1()
Dim a As Integer, b As Integer, c As Integer, d As Integer, x As Integer
With Sheets("Blad1")
a = InputBox("Laagste getal kolom F ?")
b = InputBox("Hoogste getal kolom F ?")
c = InputBox("Laagste getal kolom H ?")
d = InputBox("Hoogste getal kolom H ?")
For x = 9 To 13
.Range("F" & x).Value = Application.RandBetween(a, 
.Range("H" & x).Value = Application.RandBetween(c, d)
Next x
End With
End Sub
Geplaatst:

Bedankt voor de oplossingen.  Maar toch heb ik nog een probleem.

Bij het delen moet het basisgetal /deeltal = rest 0. vb.  20 / 4 = 5, maar 22 / 3 = ,getal en dat mag niet. 

 

Hoe kan ik dit bekomen.

Geplaatst: (aangepast)

Je wil dat de uitkomst van een deling steeds een geheel getal is?

Dan moet je daar bij elke deling op controleren en indien nodig de getallen behorend bij die deling opnieuw laten bepalen. Je kunt dan best de getallen van alle opgaven niet in 1 keer laten bepalen maar elk afzonderlijk. Want álle getallen opnieuw laten kiezen kan betekenen dat een andere deling dan weer niet klopt. Als het om een klein aantal opgaven gaat, kun je die aanpassing best handmatig doen. Als je het de macro wil laten doen, dan is het principe:

- Controleer of de uitkomst van de deling een geheel getal is.

- Is dat niet get geval: --> kies nieuwe getallen en controleer opnieuw de deling.

- Is dat wél het geval: --> ga verder met de uitvoering van de macro.

Je moet er dan natuurlijk ook voor zorgen dat die controle alleen bij een deling en niet bij andere bewerkingen plaatsvindt..

Een mooie opgave (want niet erg moeilijk) voor degenen die met vba geginnen.

aangepast door alpha
Gast
Dit topic is nu gesloten voor nieuwe reacties.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.