Einfaches Makro

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

campino13
Beiträge: 4
Registriert: Sa, 01.02.2020 14:28

Einfaches Makro

Beitrag von campino13 »

Ich bin nicht der versierteste Programmierer, daher habe ich eine Frage:

Warum bekomm ich hier immer nur den letzten Wert in die Tabelle eingetragen und nicht jeweils pro Zeile das berechnet, was ich gerne hatte? Also für jedes Zeile den entsprechenden Wert?

REM Umsatzübersicht



OPTION EXPLICIT

Sub Main

'Deklaration
CONST min = 1 'Minimum, Anzahl der Produkte
CONST max = 4 'Maximun, Anzahl der Produkte
CONST ueb = "Umsatz mit Prozentanteilen" 'Überschrift

DIM y AS integer 'Zeilenoffset
DIM i AS integer 'Hilfsvariable, Zusammenhang mit Anzahl der Produkten
DIM Umsatz AS single 'Umsatz der Produkte
DIM USumme AS single 'Umsatzsumme
DIM PAnteil AS single 'prozentualer Anteil

'initialisieren/Zeilenoffset
y = 2

'Tabelleninhalte löschen
ThisComponent.Sheets(0).clearContents(255)

'Verarbeitung/Umsatz
FOR i = min TO max
Umsatz(i) = InputBox("Bitte geben Sie den Umsatz für Produkt " & i & " ein: ",ueb)
NEXT i

'initialiesieren/Umsatzsumme
USumme = 0

'Verarbeitung/Umsatzsumme
FOR i = min TO max
USumme = USumme + Umsatz(i)
NEXT i

'Verarbeitung/prozentualer Anteil
FOR i = min TO max
PAnteil(i) = Umsatz(i) * 100/USumme
NEXT i

'Maske
ThisComponent.Sheets(0).getCellByPosition(0,0).String = "Umsatzübersicht"
ThisComponent.Sheets(0).getCellByPosition(0,1).String = "Produktnummer"
ThisComponent.sheets(0).getCellByPosition(1,1).String = "Umsatz (Euro)"
ThisComponent.sheets(0).getCellByPosition(2,1).String = "% - Anteil"

FOR i = min TO max
ThisComponent.Sheets(0).getCellByPosition(0,y - min + i).Value = i
ThisComponent.Sheets(0).getCellByPosition(1,y - min + i).Value = Umsatz(i)
ThisComponent.Sheets(0).getCellByPosition(1,y - min + i).NumberFormat = 4
ThisComponent.Sheets(0).getCellByPosition(2,y - min + i).Value = PAnteil(i)
NEXT i

ThisComponent.sheets(0).getCellByPosition(0, y + max - min + 1).String = "Summe: "
ThisComponent.sheets(0).getCellByPosition(1, y + max - min + 1).Value = USumme
ThisComponent.sheets(0).getCellByPosition(1, y + max - min + 1).NumberFormat = 4

End Sub

Sub Macro1

End Sub
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Einfaches Makro

Beitrag von RobertG »

Hallo Campino13,

falsche Komponente: Base ist das Modul, in dem Datenbanken erstellt werden. Dein Makro hat irgendetwas mit Calc zu tun. Also entweder dort bei "Makros und Programmierung" nachfragen.

Gruß

Robert
campino13
Beiträge: 4
Registriert: Sa, 01.02.2020 14:28

Re: Einfaches Makro

Beitrag von campino13 »

OK, mein Fehler - danke :) !
Hiker
******
Beiträge: 591
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Einfaches Makro

Beitrag von Hiker »

Hallo,

was mir neben dem falschen Forumsteil auffällt:

Du hast via DIM kein einziges Array definiert.
Was BASIC also aus Umsatz(i) macht, weiss ich nicht.

Mfg, Jörn

Edit:
Inzwischen hier gelöst:
viewtopic.php?f=18&t=74271
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Antworten