Loop weer eens te klooien met verschil Calc en Excel

Bespreek het rekenblad
Atwist
Berichten: 52
Lid geworden op: ma sep 14, 2015 8:56 am

Loop weer eens te klooien met verschil Calc en Excel

Bericht door Atwist »

Ik heb een stukje code wat niet in Calc wil werken

Code: Selecteer alles

Sub TextField1_Change()
        Range("Blad1!E6").Value = TextField18.Value
End Sub
Deze werkt wel in Excel

Code: Selecteer alles

Private Sub TextBox29_Change()
Range("Blad1!K49").Value = TextBox29.Value
End Sub
Soms snap ik het niet meer ik denk nog te veel in EXCEL
Andreas

LibreOffice 4.4.7.2. op Linux Mint en zeker geen Versie 5 meer.
RPG
Berichten: 4670
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door RPG »

Hallo

Waarom gebruik je een uitroepteken? Wil dat ook in een werkblad formule?

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

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door RPG »

Hallo

Ik denk dat je namen moet definiëren in je werkbladen en deze namen moet gebruiken in je macro's

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

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door RPG »

Hallo

Ik heb ook nog even gekeken of ik zelf iets wist van de macro's maar het blijkt altijd erg moeilijk te zijn om daar iets van te maken. Ik weet ook weinig van macro's voor calc. Misschien kun je een beschrijving geven over wat je wilt bereiken. Dan is het misschien mogelijk om een andere oplossing te vinden.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
eremmel
Berichten: 670
Lid geworden op: di sep 01, 2009 10:11 am
Locatie: Barneveld, Nederland

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door eremmel »

Het heeft te maken met de '!' als scheiding. Daar moet je een punt '.' van maken.
Als je LibreOffice gebruikt kun je kiezen voor compatibiliteit: Extra -> Opties -> Calc -> Formules -> 'Formule syntax' = Excel A1
AOO biedt beperkte auto-compatibiliteit voor functies als =INDIRECT ( "Sheet1!A1" )
Ik heb te weinig ervaring met macro's om te kunnen zeggen of LO bij keuze voor 'Excel A1' dit ook oplost. Maar als je met macro's aan de gang gaat kun je dit zelf ook wel testen.

Succes, en als je met LO aan de gang gaat laat even weten wat de uitkomst is.
W11 21H2 (build 22000), LO 7.4.1.2(x64)
Het is Microsoft marketing die laat geloven dat computers geschikt zijn voor niet technici
Atwist
Berichten: 52
Lid geworden op: ma sep 14, 2015 8:56 am

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door Atwist »

Goedemorgen,

Ja ik probeer een "Userform" te maken dus een invul scherm en daarbij wil ik dus een tekstvak aan een cel kopellen zodra ik het invul scherm opsla de gegevens in de betrefende cellen komt te staan.

Dit heb ik erg vaak met Excel gedaan maar met Ooo lukt het mij nog niet.
Andreas

LibreOffice 4.4.7.2. op Linux Mint en zeker geen Versie 5 meer.
RPG
Berichten: 4670
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door RPG »

Hallo

Het lijkt mij simpel: je wilt een soort database maken dan is het ook verstandig om de database hulpmiddelen te gebruiken. Je moet de data opslaan in een database en gebruik maken van invoer formulieren.

LibreOffice
LO-calc heeft nog een aangepaste mogelijkheid voor het invoeren van gegevens:
menu --> Gegevens -->formulier
Ik weet niet hoe betrouwbaar dat is. Het is misschien ook noodzakelijk om dat te koppelen aan een databasebereik.

Macro's
Er is wel een goede en gedetailleerde beschrijving van de API maar die is maar voor weinigen toegankelijk: leesbaar. Macro's zijn vaak alleen rendabel voor personen die echt ook een gedegen begrip hebben van de onderliggende service. Wanneer je met gegevens wilt gaan werken dan is het beginnen met een database naar mijn idee een vereiste. Later is het mogelijk om de gegevens op andere manieren te gebruiken. Het omgaan met de gegevens wordt door andere zaken bepaald.

Compatibility tussen Excel en Calc. Uit een kleine test lijkt een uitroepteken niet te werken in een macro ook al heb ik het ingesteld bij formules zoals beschreven door Eremmel.

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

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door RPG »

Hallo

Onderstaande code wil een array invoegen in een databaserange. Het zit heel kort bij het systeem. Zodoende is het denk ik ook mogelijk om zowel Ecell notatie als OOo notatie te gebruiken. Zolang er gewerkt met met benoemde namen dan is er niet zoveel probleem. Maar Ik denk niet dat een uitroep teken gebruikt kan worden in de macro's zelf.

Romke

Code: Selecteer alles

sub doinDbaseRange
dim oDbaserange
dim oReferredCells
dim oRangetowork
const sDbaserangeName="Import1" ' Dit is de naam van de database range
dim mDataarray

' Voor namedranges moet het iets aangepast worden
'Regel eerst iets voor de waarden die ingevoegd moeten worden.
dim mWaarden
mWaarden=array("Beest",6,7,8,9,12) ' Hier kan ook een reeks andere waarden gebruikt worden

oDbaserange=thiscomponent.DatabaseRanges.getbyname(sDbaserangeName)
oReferredCells= oDbaserange.ReferredCells
'oRangetowork wordt voordurend bijgewerkt
oRangetowork= oReferredCells.getCellRangeByName(oReferredCells.AbsoluteName)' Laat nu verwijzen naar een cel
oRangetowork.rows.insertByIndex(1,1) ' Voeg een enkele rij in

'mDataarray=oRangetowork.getCellRangeByName("B2:F2")
'oReferredCells.columns.count geeft aan hoeveel kollmmen er zijn.
' Hou er rekening mee dat het met 1 verminderd moet worden om de dataarray te hebben
mDataarray=oRangetowork.getCellRangeByPosition(0,1,oReferredCells.columns.count-1,1)
mDataarray.setDataArray(array(mWaarden())
end sub
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
RPG
Berichten: 4670
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door RPG »

Hallo

Ik ben nog even verder gegaan met het uitzoeken van dit. Het geeft mij ook enig vat op de API van OOo. Ik kan er nu ook enige uitleg bij geven

Waarschuwing
Wanneer je op dit niveau bezig gaat dat is het noodzakelijk om alles goed te begrijpen. Komma's, punten en nog meer zaken krijgen vaak een andere betekenis dan gedacht. Ook waarden zoals een datum worden niet altijd behandeld zoals gedacht. Soms wordt er gewerkt locale instellingen soms wordt er gewerkt met wat voor BASIC normaal is. Het is aan te bevelen om iets af te dwingen.

Cel-waarden
In een cel kan van alles opgeslagen worden
a) Getallen
b) Tekst
c) Formule
d) een vertaalde formule
e) Misschien nog wel wat

Getallen
Een getal wat opgeslagen wordt kan op verschillende manier weergegeven wordt. Dit is afhankelijk van de opmaakt. Hoe de opmaak ook is een getal blijft een getal en is in een cel een getal met een drijvende komma.

DataArray
Een DataArray biedt de mogelijkheid om een tekst of een getal op te slaan in een cel. Dit kan ook een CelRange zijn: dus meer cellen. Getallen moeten aangeboden worden als double. Wanneer het als een tekst zonder aanhalingstekens aangeboden wordt dan moet de punt als decimaal teken gebruikt worden. Het is uiteindelijk BASIC. De aangeboden array moet corresponderen met het aangewezen gebied anders wordt er een foutmelding gedaan. Een dataArray kan ook voor een enkele cel gelden. Zonder vragen wordt alles uitgevoerd maar het is mogelijk dat control-Z wel werkt.

De Opbouw van DataArray
De opbouw van een dataArray kan nog al complex zijn daar het niet een meer- dimensionale array is maar een geneste array van mogelijk meerdere één-dimensinale array's. Ik heb het niet uitgeprobeerd en het is moeilijk omdat uit te leggen. Ik probeer eerst meestal de bron gegevens te analyseren en dan het na te maken. Als voorbeeld:

Code: Selecteer alles

print genesteArray(1)(3)
Toegankelijkheid en gebruik
Het mag duidelijk zijn dat dit niet zo gemakkelijk te vinden is voor de doorsnee gebruiker. Het is toch wel aan te raden om dit te gaan gebruiken als iemand macro's wil gaan schrijven. De macro's worden wel eenvoudiger als men het eenmaal begrijpt. OpenOffice draagt zorg voor enkele zaken die men anders zelf moet doen.

Romke

Code: Selecteer alles

sub doinDbaseCell
' Dit is voor een Cel
dim oDbaserange
dim oReferredCells
dim oRangetowork
const sDbaserangeName="Import1" ' Dit is de naam van de database range
dim mDataarray

' Voor namedranges moet het iets aangepast worden
'Regel eerst iets voor de waarden die ingevoegd moeten worden.
dim mWaarden
mWaarden=array(6) ' Hier kan ook een reeks andere waarden gebruikt worden
dim ietsrow
oDbaserange=thiscomponent.DatabaseRanges.getbyname(sDbaserangeName)
oReferredCells= oDbaserange.ReferredCells
ietsrow= oReferredCells.Rows.Count
'oRangetowork wordt voordurend bijgewerkt
oRangetowork= oReferredCells.getCellRangeByName(oReferredCells.AbsoluteName)' Laat nu verwijzen naar een cel
oRangetowork.rows.insertByIndex(ietsrow-1,1) ' Voeg een enkele rij in

'mDataarray=oRangetowork.getCellRangeByName("A2:F2")
'oReferredCells.columns.count geeft aan hoeveel kollmmen er zijn.
' Hou er rekening mee dat het met 1 verminderd moet worden om de dataarray te hebben
mDataarray=oRangetowork.getCellByPosition(2,5)
mDataarray.setDataArray(array(mWaarden())
end sub
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Atwist
Berichten: 52
Lid geworden op: ma sep 14, 2015 8:56 am

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door Atwist »

Hallo Romke,

Mijn excuus voor het laat reageren, was te druk om een website te verhuizen wat een beetje de mist in is gegaan.

Ik ga mij even ik jou voorstellen verdiepen. :super: :super:
Andreas

LibreOffice 4.4.7.2. op Linux Mint en zeker geen Versie 5 meer.
RPG
Berichten: 4670
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Loop weer eens te klooien met verschil Calc en Excel

Bericht door RPG »

Hallo

Ik denk dat het goed is dit Calc as a Simple Database - Apache OpenOffice Wiki te lezen. Volg ook de rest van de links voor dat hoofdstuk.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Plaats reactie