Seite 1 von 1
CALC: Makro -Mittelwerte-
Verfasst: Mi, 03.10.2012 10:36
von mjammjam
Betriebssystem: Ubuntu 12.04
OO: 3.5.4.2
Fehlermeldung beim ersten Average-Wert = "RUNTIME ERROE Sub-procedure or function procedure not defined"
(CellsZ, 12.FormulaR1C1 = =averageR-2C-3:R2C-3)
Hier das bisher geschriebene:
Code: Alles auswählen
Sub mitteln
'
' mitteln Macro
' Beginn der Messung
Dim Bgn As Integer
' Messpunkte innerhalb des steps
Dim i As Integer
' Anzahl Steps
Dim J As Integer
Dim Z As Integer
Bgn = 3
For J = 0 To 24
For i = 1 To 600
Z = i + Bgn + J * 600
' Bereich I
If i < 5 Then
CellsZ, 12.FormulaR1C1 = =averageR-2C-3:R2C-3
ElseIf i < 15 Then
CellsZ, 12.FormulaR1C1 = =averageR-5C-3:R5C-3
ElseIf i < 30 Then
CellsZ, 12.FormulaR1C1 = =averageR-14C-3:R14C-3
ElseIf i < 90 Then
CellsZ, 12.FormulaR1C1 = =averageR-30C-3:R30C-3
ElseIf i < 105 Then
CellsZ, 12.FormulaR1C1 = =averageR-14C-3:R14C-3
ElseIf i < 115 Then
CellsZ, 12.FormulaR1C1 = =averageR-5C-3:R5C-3
ElseIf i < 125 Then
CellsZ, 12.FormulaR1C1 = =averageR-2C-3:R2C-3
' Bereich II
ElseIf i < 135 Then
CellsZ, 12.FormulaR1C1 = =averageR-5C-3:R5C-3
ElseIf i < 150 Then
CellsZ, 12.FormulaR1C1 = =averageR-14C-3:R14C-3
ElseIf i < 180 Then
CellsZ, 12.FormulaR1C1 = =averageR-30C-3:R30C-3
ElseIf i < 195 Then
CellsZ, 12.FormulaR1C1 = =averageR-14C-3:R14C-3
ElseIf i < 205 Then
CellsZ, 12.FormulaR1C1 = =averageR-5C-3:R5C-3
ElseIf i < 215 Then
CellsZ, 12.FormulaR1C1 = =averageR-2C-3:R2C-3
' Bereich III
ElseIf i < 225 Then
CellsZ, 12.FormulaR1C1 = =averageR-5C-3:R5C-3
ElseIf i < 240 Then
CellsZ, 12.FormulaR1C1 = =averageR-14C-3:R14C-3
ElseIf i < 570 Then
CellsZ, 12.FormulaR1C1 = =averageR-30C-3:R30C-3
ElseIf i < 585 Then
CellsZ, 12.FormulaR1C1 = =averageR-14C-3:R14C-3
ElseIf i < 595 Then
CellsZ, 12.FormulaR1C1 = =averageR-5C-3:R5C-3
Else
CellsZ, 12.FormulaR1C1 = =averageR-2C-3:R2C-3
End If
Next i
Next J
End Sub
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst; CODE tags gesetzt
Re: Hilfe bei Makro -Mittelwerte-
Verfasst: Mi, 03.10.2012 11:21
von juetho
- Bitte formatiere den Code als Code. Gehe dazu auf deinen Beitrag mit "Ändern", markiere den Code-Auszug und drücke die Code-Schaltfläche. Benutze die Vorschau und füge in den Code Einrückungen ein, damit der Code übersichtlicher wird. Erst danach drücke auf Absenden.
- Verschachtelte IFs sollten besser durch SELECT CASE ersetzt werden; das ist meistens übersichtlicher.
- Ich vermisse die Angaben zu OO-Programm und Version sowie Betriebssystem und Version.
- Wo und wie wird das Makro gestartet?
- Vor allem fehlt die Angabe des Fehlers mit Erläuterung: Läuft das Makro überhaupt nicht oder bricht es irgendwo ab? Dann brauchen wir auch die Zeile mit dem Fehler und der genauen Fehlermeldung.
Ist das so schwer, den potenziellen Helfern mit ausreichenden Informationen zu helfen? Jürgen
Re: CALC: Makro -Mittelwerte-
Verfasst: Mi, 03.10.2012 12:56
von balu
Hallo mjammjam,
wenn mich meine Hühneraugen nicht täuschen, dann ist das ein EXCEL-Makro welches Du hier postest.
Code: Alles auswählen
' Absolute Zeit zum schreiben in das excelsheet
CellsZ, 12.FormulaR1C1 text= =averageR-2C-3:R2C-3
Und das wirft jetzt natürlich gleich ganz andere Fragen auf:
- Hast Du dich mit dem Forum vertan, und wäre ein Excel-Forum nicht besser für dich?
- Soll die Datei (das Makro) in Excel UND in Calc funktionieren?
- Oder willst Du das Excel Makro für OOo/LO/AOO umschreiben?
Gruß
balu
Re: CALC: Makro -Mittelwerte-
Verfasst: Mi, 03.10.2012 13:18
von mjammjam
Moin!
Das Makro lief in Excel, da ich Ubuntu nutze, wollt ich es in OpenOffice (Version 3.5.4.2) umschreiben. Mir fehlen aber die Befehle.
Sorry, wenn ich hier Dinge falsch darstelle, ich bin echt kein Crack.
Re: CALC: Makro -Mittelwerte-
Verfasst: Mi, 03.10.2012 13:35
von balu
Hallo mjammjam,
Das Makro lief in Excel, da ich Ubuntu nutze, wollt ich es in OpenOffice (Version 3.5.4.2) umschreiben.
Na das erklärt doch vieles.
Mir fehlen aber die Befehle.
Dem kann doch abgeholfen werde. Wenn es dir hilft, dann schau doch mal bei
Michael Dannenhoefer vorbei, und dort besonders Kapitel 7 "Tabellen - Calc".
Und wenn Du dann noch Probleme hast, meldest Du dich einfach wieder. Viel Erfolg.
Gruß
balu
Re: CALC: Makro -Mittelwerte-
Verfasst: Mi, 03.10.2012 13:57
von juetho
mjammjam hat geschrieben:Mir fehlen aber die Befehle.
Außerdem gibt es das Standardwerk von Andrew Pitonyak, auf das gleich im ersten Absatz von
Informationen zur StarBasic-Programmierung mit Link hingewiesen wird: Kapitel 5 mit Calc-Makros und Kapitel 8 bis 10 mit der StarBasic-Sprache und Funktionen.
Danke auch für die nachträglichen Änderungen im ersten Beitrag! Jürgen
Re: CALC: Makro -Mittelwerte-
Verfasst: Mi, 03.10.2012 14:43
von Karolus
Hallo
Mag sein das das Ding in Excel "lief", aber der der Code ist doch weitgehend sinnfrei - eine for-schleife für i, in der über etliche if/elseif Statements eine Formel in Abhängigkeit von i gebastelt wird ??? -wozu der Quatsch ? letztendlich wird ja doch die Formel für i == 600 eingetragen.
Karolus
Re: CALC: Makro -Mittelwerte-
Verfasst: Mi, 03.10.2012 16:37
von mjammjam
Dankeschön! Ich les mich durch!
Re: CALC: Makro -Mittelwerte-
Verfasst: Do, 04.10.2012 14:10
von mjammjam
Moin!
Ich hab das MAkro nochmal umgeschrieben -vielen, vielen Dank für die Buch-Tipps.
Es läuft jetzt, aber leider wird alles in Zeile O5 geschrieben. Es soll aber nur der erste Mittelwert da reingeschrieben werden, anschließend soll eine Zeile drunter der nächste geschrieben werden. Wie vermittel ich das dem Programm?
Danke und Lieben Gruß!
Betriebssystem: Ubuntu 12.04
OpenOffice: 3.5.4.2
Makro:
Code: Alles auswählen
REM **** Basic ****
Option Explicit
Sub Mitteln
Dim Bgn as Integer, i As Integer, J as Integer, Z as Integer
Dim myDoc as Object, mySheet as Object, mycell as Object
myDoc = ThisComponent
mySheet = myDoc.sheets().getByName("120910_SchlammTS2_AC3_2")
mycell = mySheet.getCellByPosition(14,4)
Bgn = (3)
For J = 0 to 24
For i = 1 to 600
Z = i + Bgn + J*600
'Relaxation 120s
If i<5 then
mycell.formula="=Average(R[-2]C[-3]:R[3]C[-3])"
Elseif i<110 then
mycell.formula="=Average(R[-14]C[-3]:R[14]C[-3])"
Elseif i<125 then
mycell.formula="=Average(R[-2]C[-3]:R[3]C[-3])"
'1.Permeatabzug 90s
elseif i<130 then
mycell.formula="=Average(R[-2]C[-3]:R[3]C[-3])"
elseif i<190 then
mycell.formula="=Average(R[-14]C[-3]:R[14]C[-3])"
elseif i<215 then
mycell.formula="=Average(R[-2]C[-3]:R[2]C[-3])"
'2.Permeatabzug 390s
elseif i<230 then
mycell.formula="=Average(R[-2]C[-3]:R[2]C[-3])"
elseif i<540 then
mycell.formula="=Average(R[-30]C[-3]:R[30]C[-3])"
elseif i<600 then
mycell.formula="=Average(R[-2]C[-3]:R[2]C[-3])"
End if
next i
next J
End Sub
Re: CALC: Makro -Mittelwerte-
Verfasst: Do, 04.10.2012 14:47
von Karolus
Dein Code enthält 25 * 600 = 15000 sinnlose Schleifendurchläufe
Letzlich läufts raus auf:
Code: Alles auswählen
Option Explicit
Sub Mitteln
Dim Bgn as Integer, i As Integer, J as Integer, Z as Integer
Dim myDoc as Object, mySheet as Object, mycell as Object
myDoc = ThisComponent
mySheet = myDoc.sheets().getByName("120910_SchlammTS2_AC3_2")
mycell = mySheet.getCellByPosition(14,4)
mycell.formula="=Average(R[-2]C[-3]:R[2]C[-3])" 'Diese Formel bleibt auch bei dir zuletzt immer übrig.
End Sub
Re: CALC: Makro -Mittelwerte-
Verfasst: Do, 04.10.2012 16:26
von mjammjam
Dankschön!
Eine Frage habe ich aber noch. ich habe 24*600 Messwerte, da jede der 24 Messungen 600s lief. Deshalb brauch ich ja das Makro zur Mittelwertbildung, denn natürlich habe ich nicht nur mit der einen Substanz Versuche gemacht. Da brauch ich doch auch die Schleifen, oder nicht? Und dann muss das Programm doch irgendwie "verstehen"/den Befehl erhalten, die Mittelwerte untereinander in meine Exceltabelle einzutragen.
Lieben Gruß (bin kurz Arbeiten),
mjammjam
Re: CALC: Makro -Mittelwerte-
Verfasst: Do, 04.10.2012 16:34
von juetho
mjammjam hat geschrieben:Es läuft jetzt, aber leider wird alles in Zeile O5 geschrieben. Es soll aber nur der erste Mittelwert da reingeschrieben werden, anschließend soll eine Zeile drunter der nächste geschrieben werden. Wie vermittel ich das dem Programm?
Das Unverständnis von Karolus dürfte damit zusammenhängen. Du musst den Befehl, der eine bestimmte Zelle auswählt, innerhalb einer der Schleifen benutzen und mit einem Index versehen.
Code: Alles auswählen
mycell = mySheet.getCellByPosition(14, 4 + j) ' oder mit einer Zusatzberechnung
Ich vermisse weiterhin SELECT CASE; damit wird es übersichtlicher als verschachtelte IFs.
mjammjam hat geschrieben:... die Mittelwerte untereinander in meine Exceltabelle einzutragen.
Schon wieder Excel. Zu OO gehört
Calc, Calc, Calc!
Jürgen
Re: CALC: Makro -Mittelwerte-
Verfasst: Do, 04.10.2012 23:55
von mjammjam
Moin!
Erstmal ein Danke für die Antworten an die Antwortenden! Danke.
Ich versuche, alles einzubauen.
@Jürgen: Haste Recht und ist gespeichert.
mm