[OPGELOST] Globale Variabelen

Praeses
Berichten: 3
Lid geworden op: vr apr 29, 2011 4:06 pm

[OPGELOST] Globale Variabelen

Bericht door Praeses »

Ik heb in Calc 2 knoppen aangemaakt. 1 om een bestelling op te nemen en 1 om de totale prijs te berekenen.
Achter elke knop zit de nodige code. Ik maak gebruik van globale variabelen. Toch kent hij de waarden van mijn variabelen niet meer wanneer ik op mijn 2e knop druk. Het gaat wel goed wanneer ik vanuit de 1e macro de 2e aanroep (dit staat in onderstaande code als commentaar). Dezelfde code in VBA (excel) werkt wel. Waar zou het probleem kunnen zitten?
Hieronder de code:

Code: Selecteer alles

Option Explicit
' naam programma: afrekening leerling in refter
' onderwerp: afrekenen van de warme maaltijden op het einde van de week
' onderdeel leerplan: sequentie voorbeeldoefening

    ' globale variabelen delcareren
    Dim AantalSpaghetti As Integer
    Dim AantalMacaroni As Integer
    Dim AantalKoninginnenhapje As Integer
    Dim AantalLasagne As Integer
    Dim Totaal As Single

Sub VraagAantalMaaltijden()
    'aantal maaltijden ingeven
    
    AantalSpaghetti = InputBox("Aantal spaghetti: ")
    AantalMacaroni = InputBox("Aantal macaroni: ")
    AantalKoninginnenhapje = InputBox("Aantal koninginnenhapje: ")
    AantalLasagne = InputBox("Aantal lasagne: ")
    'BerekenPrijs()     --> als ik dit gebruik lukt het wel
    
End Sub

Sub BerekenPrijs()
    ' prijs bereken
   
    ' lokale variabelen declareren
    Dim PrijsSpaghetti As Single
    Dim PrijsMacaroni As Single
    Dim PrijsKoninginnenhapje As Single
    Dim PrijsLasagne As Single

    PrijsSpaghetti = 5.5 * AantalSpaghetti
    PrijsMacaroni = 6 * AantalMacaroni
    PrijsKoninginnenhapje = 7 * AantalKoninginnenhapje
    PrijsLasagne = 6 * AantalLasagne
      
    Totaal = PrijsSpaghetti + PrijsMacaroni + PrijsKoninginnenhapje + PrijsLasagne
    
    MsgBox "De leerling moet " & Totaal & "euro betalen"
    
 End Sub
Laatst gewijzigd door Praeses op di mei 10, 2011 8:44 am, 1 keer totaal gewijzigd.
OpenOffice 3.2, Windows XP
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Globale Variabelen

Bericht door RPG »

Hallo

Er lijkt mij niets verkeerd aan de code. Ik denk alleen dat je een verkeerde verwachting heb.

Mijn advies is leer werken met wat je kunt doen met OpenOffice.org zonder gebruik te maken van zelf geschreven macros. Het valt mij elke keer opnieuw op dat iets wat wel werkt bij Microsof Office niet zo gemakkelijk is om te zetten naar OOo.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Globale Variabelen

Bericht door RPG »

Hallo

Ik heb de help file er even op nagekeken maar je gebruik geen global variabelen die bewaard worden.
De help file schreef: Bereik van variabelen
Een variabele gedefinieerd binnen een SUB of een FUNCTIE, blijft slechts geldig totdat de procedure is beëindigd. Dit is bekend als een "local" variabele. In veel gevallen hebt u een variabele nodig die geldig is in alle procedures, in elke module van alle bibliotheken, of nadat een SUB of FUNCTIE is beëindigd.
Variabelen buiten een SUB of FUNCTION declareren
GLOBAL VarName As TYPENAME
De variabele is geldig zolang de LibreOffice-sessie duurt.
PUBLIC VarName As TYPENAME
De variabele is geldig in alle modules.
PRIVATE VarName As TYPENAME
De variabele is alleen geldig in deze module.
DIM VarNaam As TYPENAME
De variabele is alleen geldig in deze module.

De beperking voor private werkt niet volkomen goed. Als je een private variabele in een module maakt dan wordt deze ook gebruikt in een andere module als deze niet expliciet gedefinieerd is.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Praeses
Berichten: 3
Lid geworden op: vr apr 29, 2011 4:06 pm

Re: Globale Variabelen

Bericht door Praeses »

Romke,

Bedankt voor je reactie. Ik heb de variabelen nu als Global gedeclareerd en nu werkt het.
Tot vorig jaar gaven we hier op school VBA, maar nu zijn we overgestapt op OpenOffice.org. Vandaar dat we niet konden blijven bij hetgeen werkte.

Groeten,
Praeses
OpenOffice 3.2, Windows XP
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Globale Variabelen

Bericht door RPG »

Hallo

Ten eerste het is goed te horen dat het werkt. Als tweede zou ik willen opmerken dat het werken met OpenOffice.org toch wel een geheel andere aanpak vergt dan MSO. Het is offtopic in deze draad maar het blijkt vaak dat een uitwerking van een idee wat goed werkt in MSO niet werkt in OOo. Ik zou willen aanraden om eerst te leren begrijpen wat je kunt doen met OOo zonder macro's en alleen in noodzakelijke gevallen macro's te gebruiken. In het begin is het moeilijk maar na enige studie, 1 jaar, wordt het gemakkelijker. Het lijkt vaak dat macro's een snelle weg naar een oplossing bieden maar het verspert vaak de weg naar het opdoen van kennis over de normale manier van werken van OOo.

Ik weet niet of je hier bekend mee bent?
http://wiki.ooo4kids.org/index.php/Main_Page
Ik weet ook niet of het goed is!

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Praeses
Berichten: 3
Lid geworden op: vr apr 29, 2011 4:06 pm

Re: Globale Variabelen

Bericht door Praeses »

Romke,

De macro's die we gebruiken op school is gewoon om de leerlingen kennis te laten maken met "programmeren". Het gaat om leerlingen van het 4e jaar secundair (15 - 16 jaar). We kunnen het geheel dus wel wat aanpassen zodat we toch een werkend resultaat krijgen.
De link die je gaf zal ik eens bekijken, maar lijkt me op het eerste zicht bestemd voor kinderen uit het lager onderwijs?

Groeten,
Praeses
OpenOffice 3.2, Windows XP
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [OPGELOST] Globale Variabelen

Bericht door RPG »

Hallo

http://fonsvitae-informatica.nl/index.html

Misschien help deze link.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Gebruikersavatar
floris v
Berichten: 2107
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: [OPGELOST] Globale Variabelen

Bericht door floris v »

Als "leren programmeren" de doelstelling is, is programmeren met macro's in OOo daar misschien niet het beste middel voor. De programmeer omgeving van OOo is ontwikkeld door de techneuten van Sun, en die kunnen er wat van als het gaat om moeilijk maken wat ook eenvoudig kan.
Lazarus is een open source variant van Delphi/Pascal, en daar is misschien makkelijker mee te werken, al stelt Pascal natuurlijk syntactisch wat hogere eisen dan BASIC en is er natuurlijk geen Nederlandstalige documentatie. Daar staat tegenover dat Pascal ooit nadrukkelijk als leermiddel is ontwikkeld.
* AOO 4.1.11 en LibreOffice 7.6.1.2 op Ubuntu 20.x
* Heb je de survival guide voor het forum al gelezen?
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [OPGELOST] Globale Variabelen

Bericht door RPG »

Hallo

Nu Floris v verwijst naar pascal komt bij mij de gedacht op van logo. Ik heb geen ervaring daar mee maar er staat mij iets van bij dat het ook voor kinderen bedoelt is. Het is waar dat leren programmeren in de API van OOo al gauw ontaard in leren wat betreft de API van OOo en die is moeilijk te doorgronden.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Plaats reactie