Makro / Wo ist der Fehler

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

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

Makro / Wo ist der Fehler

Beitrag von campino13 »

War wohl erst im falschen Forum unterwegs, daher hier noch mal das Thema.
______
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
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro / Wo ist der Fehler

Beitrag von F3K Total »

Moin,
du hast mit

Code: Alles auswählen

DIM Umsatz AS single 'Umsatz der Produkte
kein Array sondern eine einzelne Zahl dimensioniert.
Nimm

Code: Alles auswählen

DIM Umsatz(max-min+1) AS single 'Umsatz der Produkte
EDIT: gilt auch für

Code: Alles auswählen

DIM PAnteil(max-min+1) AS single 'prozentualer Anteil
Gruß R
campino13
Beiträge: 4
Registriert: Sa, 01.02.2020 14:28

Re: Makro / Wo ist der Fehler

Beitrag von campino13 »

Schon mal dank dafür.

Aber damit bekomme ich doch immer den gleichen Prozentanteil? Zumindest gibt mir das mein Makro jetzt aus.
EDIT: ok ... das erklärts :)

THX!
Antworten