Automatisch vullen van een rij

Bespreek het rekenblad

Automatisch vullen van een rij

Berichtdoor milagro » ma jul 22, 2019 3:16 pm

Hallo ik heb in office een Marco opgenomen waarbij een rij wordt gevuld
Maar hoe maak ik een variabele waarbij $43 de lengte van het document is?

Regel 159
Code: Selecteer alles   UitklappenInklappen
args25(0).Value = "$E$3:$F$VARIABEL"



Code: Selecteer alles   UitklappenInklappen

sub AutoFill
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertColumns", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertColumns", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$E$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "C"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "StringName"
args6(0).Value = "D"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = 1
args7(1).Name = "Sel"
args7(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$E$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "StringName"
args9(0).Value = "WAARDE"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args9())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args11(0) as new com.sun.star.beans.PropertyValue
args11(0).Name = "ToPoint"
args11(0).Value = "$E$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args11())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "ToPoint"
args12(0).Value = "$F$4"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args12())

rem ----------------------------------------------------------------------
dim args13(0) as new com.sun.star.beans.PropertyValue
args13(0).Name = "ToPoint"
args13(0).Value = "$E$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args13())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, Array())

rem ----------------------------------------------------------------------
dim args15(0) as new com.sun.star.beans.PropertyValue
args15(0).Name = "ToPoint"
args15(0).Value = "$E$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args15())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, Array())

rem ----------------------------------------------------------------------
dim args17(0) as new com.sun.star.beans.PropertyValue
args17(0).Name = "ToPoint"
args17(0).Value = "$E$3:$E$43"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args17())

rem ----------------------------------------------------------------------
dim args18(0) as new com.sun.star.beans.PropertyValue
args18(0).Name = "ToPoint"
args18(0).Value = "$F$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args18())

rem ----------------------------------------------------------------------
dim args19(0) as new com.sun.star.beans.PropertyValue
args19(0).Name = "StringName"
args19(0).Value = "Waarde"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args19())

rem ----------------------------------------------------------------------
dim args20(0) as new com.sun.star.beans.PropertyValue
args20(0).Name = "ToPoint"
args20(0).Value = "$E$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args20())

rem ----------------------------------------------------------------------
dim args21(0) as new com.sun.star.beans.PropertyValue
args21(0).Name = "ToPoint"
args21(0).Value = "$E$3:$F$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args21())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, Array())

rem ----------------------------------------------------------------------
dim args23(0) as new com.sun.star.beans.PropertyValue
args23(0).Name = "ToPoint"
args23(0).Value = "$E$3:$F$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args23())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, Array())

rem ----------------------------------------------------------------------
dim args25(0) as new com.sun.star.beans.PropertyValue
args25(0).Name = "ToPoint"
args25(0).Value = "$E$3:$F$43"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args25())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:FillDown", "", 0, Array())


end sub

OpenOffice 6.1.3.2 Win 10
milagro
 
Berichten: 4
Geregistreerd: do jan 31, 2019 5:51 pm

Re: Automatisch vullen van een rij

Berichtdoor RPG » ma jul 22, 2019 4:27 pm

Ik heb even geprobeerd te begrijpen wat deze macro moet doen maar het is mij niet gelukt. Ook heb ik gekeken bij je vorige vraag; die ging ook al over een opgenomen macro. Wanneer je door wilt gaan met macro's dan wacht je een harde leerschool. Dit is ook alleen maar te leren door te gaan zoeken op het Engelse forum. Je moet je echt verdiepen in wat heet services en interfaces. Dat heeft ook alleen maar zin wanneer je een grondige kennis hebt van de normale werking van OpenOffice; maakt niet uit welke versie je gebruikt.

Kun je beschrijven waar je mee bezig bent.
a) in het algemeen
b) In het bijzonder hoe doe je autofill als het geen opgenomen macro is?

Het is voor de meeste beginners aan te raden eerst lange tijd allerlei mogelijkheden te bestuderen voordat ze met macro's beginnen.

Romke
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 3967
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Automatisch vullen van een rij

Berichtdoor RPG » ma jul 22, 2019 7:30 pm

Ik heb ook nog even gezocht in het boek van Andrew Pitonyak te vinden in de link. Macro Guides | LibreOffice Documentation - Your documentation for LibreOffice
Je moet zoeken naar: fillauto
In vond het in hoofdstuk 15.4.9 op blz 478
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 3967
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Automatisch vullen van een rij

Berichtdoor RPG » di jul 23, 2019 10:08 am

Ik ben nog wat langer bezig geweest met de door jouw opgenomen macro. Ik heb het idee dat je met het kiezen van deze weg,het gebruiken van macro's, het je vaak moeilijker maakt dan nodig is. Spreadsheet zijn heel goed ingericht om te werken met tabellen. Het wordt pas mooi als deze tabellen meerdere perioden beslaan. Ik denk hierbij aan bankgegevens. De banken leveren heel vaak mooie CSV bestanden aan. Het eerste en vaak ook belangrijkste probleem is dat deze gegevens goed ingelezen moeten worden in het werkblad. Het mooie van deze CSV is dat de banken hun eigen manier van opslaan bijna altijd gelijk houden door de jaren heen.

Ik ben van mening dat wij de indeling van de banken niet moeten veranderen. Wel kan het zo zijn dat het voor het verkrijgen van een goed inzicht het toevoegen van enkele kolommen verstandig kan zijn. Deze toegevoegde kolommen moeten aan het begin of het einde van de tabel toegevoegd worden.

Naast het toevoegen van kolommen kan het toevoegen van rijen gewenst zijn. Deze moeten dan wel de nodige informatie hebben om ze hun werking te laten doen.

Het bovenstaande maakt in principe een mooie kleine database van onze gegevens.

Analyse van de database
Een werkblad heeft prima hulpmiddelen om de gegevens netjes te analyseren per gewenste periode. Deze analyse kan vaak zonder een enkele formule uitgevoerd worden. Onderdeel van het maken de analyse is ook het maken van tabellen. De draaitabel is het meest gebruikte middel om tabellen te analyseren.

Draaitabel
De draaitabel is in het begin erg onduidelijk. Ik weet dat ook uit eigen ervaring. De draad [Opgelost] Koppeling kan niet bijgewerkt worden (Toon onderwerp) • OpenOffice.org is een mooi voorbeeld wat een draaitabel kan doen. Het was niet het onderwerp van de vraagstelling. Maar ook in die draad en in een later vervolg in een andere bleek dat het simpel toepassen van een draaitabel duizenden functies overbodig maken. LibreOffice heeft het soms nog gemakkelijker gemaakt door de draaitabel ook nog te koppelen aan een grafiek.

Samenvattend
Probeer de gegevens goed gestructureerd te bewaren.
Bewaar de gegevens in originele toestand.
Leer de gegevens te analyseren met reeds ingebouwde hulpmiddelen zoals een draaitabel.

Romke
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 3967
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Automatisch vullen van een rij

Berichtdoor RPG » di jul 23, 2019 9:58 pm

LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 3967
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Automatisch vullen van een rij

Berichtdoor milagro » ma aug 19, 2019 5:05 pm

Oké dit is het geworden. Misschien nog voor verbetering vatbaar?

Code: Selecteer alles   UitklappenInklappen
Sub way

   Rem Varible ------------------------------
   oSheet= ThisComponent.CurrentController.ActiveSheet
   Column = 4       'crediteur column
   RowIndex = 3   'Startpunt row
   Rem ---------------------------------------



   rem Voeg twee nieuwe kolommen in
   oSheet.Columns.insertByIndex(4,2)

   rem Plaat labels Debet Credit
   oSheet.GetCellRangeByName("E2").setString("Credit")
   oSheet.GetCellRangeByName("F2").setString("Debet")


   rem aantal rijen tellen
   Doc = ThisComponent
   Sheet = Doc.Sheets.getByIndex(0)
   Curs = Sheet.createCursor
   Curs.gotoEndOfUsedArea(True)
   NumRows = Curs.Rows.Count

   For i = 1 to NumRows

      rem is het bedrag een bijschrijving of een afschrijving?
      If oSheet.GetCellRangeByName("D" & RowIndex).String = "C" Then 'Doorzoek colum D (CreditDebet)
      
         rem Zoek de bijschrijvingen op
         CeditBedarg = oSheet.GetCellRangeByName("G" & RowIndex).Value
                  
         rem Plaats bedrag in crediteur column
         oSheet.GetCellRangeByName("E" & RowIndex).Value =    CeditBedarg
      else   
   
         rem Zoek de afschrijvingen op
         DebitBedarg = oSheet.GetCellRangeByName("G" & RowIndex).Value
                  
         rem Plaats bedrag in debite column
         oSheet.GetCellRangeByName("F" & RowIndex).Value =    DebitBedarg   
      
      endif


   RowIndex = RowIndex +1
   Next i



end sub
OpenOffice 6.1.3.2 Win 10
milagro
 
Berichten: 4
Geregistreerd: do jan 31, 2019 5:51 pm

Re: Automatisch vullen van een rij

Berichtdoor RPG » ma aug 19, 2019 6:25 pm

Hallo Milagro

milagro schreef:Oké dit is het geworden.
Het is mooi dat je tot een resultaat bent gekomen waar je zelf tevreden mee bent.

milagro schreef:Misschien nog voor verbetering vatbaar?
Ik denk wel dat het voor verbetering vatbaar is. De verbetering zit op een andere plaats dan waar jij die verwacht.

Wat ik zie is dat mensen zich verdiepen in eenvoudige instructies. Het zijn wel eenvoudige instructies die alleen beschreven worden voor specialisten en dus moeilijk toegankelijk voor normale gebruikers. Vanwege de geschiedenis zijn veel computer gebruikers begonnen met BASIC om zelf te programmeren. Maar al snel kwamen programma's die al dat programmeer werk overbodig maakte. Het kwam er op neer de gegevens goed te verzamelen in tabellen. Deze tabellen kunnen ook in een werkblad staan.

Soms is het noodzakelijk dat de volgorde van de kolommen aangepast moet worden. Hier is de geregistreerde database een belangrijk hulpmiddel. Query die staan in die zo'n geregistreerde database laten de kolom-volgorde naar wens aanpassen. Deze query's kunnen gebruik worden in een werkblad om de gewenste informatie uit de getoonde gegevens te halen.

Het is jammer dat je al die mogelijk links laat liggen.
Je hebt ook nog steeds geen idee gegeven waar je met bezig bent. Dat is ook jammer. Het is beter om duidelijk te zijn over je begin gegevens. Het wordt tijd dat je leert wat een spreadsheet voor je kunnen doen. Dat had je al kunnen leren in Excel.

Romke
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 3967
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Automatisch vullen van een rij

Berichtdoor RPG » ma aug 19, 2019 11:26 pm

Ik heb ook nog gezocht naar een voorbeeld van een draaitabel op het Engelse forum. Deze keer vond ik deze: [Solved] Operation on group (View topic) • Apache OpenOffice Community Forum. Het is een voorbeeld van Villeroy en hij maakt duidelijk wat er allemaal mee mogelijk is enkel en alleen met wat klikken op de muis. Ik verwijs ook graag naar zijn voorbeelden en uitleg daar hij meer kennis heeft dan ik heb. Het is waarschijnlijk niet zo dat je het gelijk kunt toepassen. Het maakt misschien duidelijk dat het wel belangrijk is om te bestuderen.
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 3967
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland


Keer terug naar Calc

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast