[EMAIL PROTECTED] schrieb:
> Hoi Marc
>
> Marc Santhoff wrote:
>
>
>>Am Mi, den 09.03.2005 schrieb [EMAIL PROTECTED] um 14:58:
>>
>>
>>
>>>Hoi J�rg
>>>
>>>Besten Dank f�r Deine Hilfe.
>>>
>>>J�rg Schmidt wrote:
>>>
>>>
>>>
>>>
>>>>das ist vielleicht doch nicht das was Du suchst? Dann nimm doch:
>>>>
>>>>=TEST(ZELLE("Sheet");SPALTE(C3);ZEILE(C3))
>>>>
>>>>
>>>>
>>>
>>>Mit dieser Hilfe bin ich nun tats�chlich etwas weiter gekommen. Ich
>>>stolpere aber von einem Problem
>>>zum N�chsten.
>>>Die OO-Basic-Umgebung ist sehr m�hsam zum arbeiten.
>>>- Unverst�ndliche Fehlermeldungen (z.B. Variable nicht definiert ....
>>>sagt aber nicht welche! So ein bl�dsinn)
>>>
>>>
>>
>>Stimmt, aber Du kannst "otion explicit" als erste Zeile im Modul
>>benutzen, dannmit werden Tippf�hler schonmal ausgeschlossen...
>>
>>
>
> Nachdem ich durch einen Tippfehler etwas herumsuchen musste hatte ich
> genau diese Option aktiviert.
> Aber dann ging es erst richtig los: Da die Fehler nicht beim Compilieren
> �ber die Symbolleiste gefunden werden - verstehe sowieso nicht was
> dieser Knopf soll, der bewirkt doch �berhaupt nichts - kommen dann
Doch, der bewirkt, dass gepr�ft wird, ob eine verwendete Variable
�berhaupt definiert ist. Das ist durchaus sinnvoll, nur nicht
definierte Variablen k�nnen Fehler enstehen die sehr schwer zu
finden sind.
option explicit soll den Programmierer dazu bringen, dass er sich
_vorher_ �berlegt welcher Datentyp in der Variablen abgelegt werden
soll. Es ist ein Unterschied ob z.B: integer oder double
Ohne Definition wird eine Variable beim ersten Auftreten automatisch
dem verwendeten Datentyp zugeordnet
a=myfunc(x,y) -> myfunc rechnet irgendwas und liefert rein
zuf�llig 1 -> integer
b=249080836083689749477393793,987897347979435 -> double
c=4,5 ->double
a=b*c
(wobei ich jetzt nicht gepr�ft habe, ob meine Zahlen wirklich
dem jew. Typ entsprechen ;) In der Hilfe unter "Variablen; Typen und
Namen" steht das)
Da a vom typ integer ist wird diese Multiplikation sicher nicht
das gew�nschte Ergebnis liefern.
Diesen Fehler wird man u.U. sehr lange suchen...
> haufenweise Meldungen von Laufzeitfehlern (die ich �brigends inzwischen
> gefunden habe - eine Pause bewirkt manchmal Wunder) wenn ich
> Ctrl-Shift-F9 anwende.
Du hast schon die Funktion zum �bersetzen des Codes entdeckt?
In der Funktionsleiste das kleine Symbol, das �hnlich wie ein Stapel
aussieht.
[...]
>>>Obwohl man einen Breakpoint setzt wird dieser oft gar nicht erreicht
Logisch, wenn vorher schon Fehler sind
>>>weil irgendwo auf eine andere gespeicherte Version zugegriffen wird. Mit
>>>"alles schliessen und neu �ffnen" kann man dieses Problem manchmal
>>>l�sen. Test's werden dadurch aber �usserst m�hsam. Man kriegt Calc nur
>>>mit Ctrl-Shift-F9 dazu alles neu zu berechnen, was aber dann h�ufig zu
>>>Abst�rzen f�hrt weil irgendwo eine Referenz oder sonst was nicht stimmt.
>>>Aber eben, die Fehlermeldungen sind dazu schlicht unbrauchbar.
Es k�nnte sein, dass, verursacht durch vorherige Fehler, das
Makro noch nicht durchgelaufen ist. Wenn Du die Ausf�hrung dann
nochmal anst�sst, hast Du mehrere Abl�ufe im Speicher.
Vorher immer daf�r sorgen, dass alle Makro's wirklich beendet sind:
Roter Punkt in der Funktionsleiste, zeigt, dass da noch was l�uft.
[...]
>
> Beispiel-Aufruf aus einer Zelle:
>
>
> =NOTENSCHNITTGEWICHTETOO(ZELLE("Sheet");ZEILE(A15);8;SPALTE($F15);SPALTE($I15);SPALTE($L15);SPALTE($O15);SPALTE($R15);SPALTE($W15);SPALTE($Z15);SPALTE($AC15);SPALTE($AF15);SPALTE($AI15))
>
> Die Argumente bedeuten:
> 1: Referenz auf das Sheet mit der Zelle
> 2: Zeilennummer mit Datenzellen
> 3: Zeilennummer mit der Gewichtung
> ab 4: Spaltennummern der Datenzellen (bis 20 optionale Datenzellen
> m�glich)
>
> Die Basicfunktionen:
>
> Function NotenSchnittGewichtetOO( Tabelle As Variant, Zeile as
> Integer, Gewichtzeile As Integer, _
> optional Arg0,optional
> Arg1,optional Arg2,optional Arg3,optional Arg4, _
> optional Arg5,optional
> Arg6,optional Arg7,optional Arg8,optional Arg9, _
> optional Arg10,optional
> Arg11,optional Arg12,optional Arg13,optional Arg14, _
> optional Arg15,optional
> Arg16,optional Arg17,optional Arg18,optional Arg19 ) As Double
Das schaut irgendwie gruslig aus ;)
IMHO besser: �bergib einen string und mach ein Array draus:
'Sheet kannst Du automatisch ermitteln.
'=NOTENSCHNITTGEWICHTETOO(ZEILE(A15);8;SPALTE($F15)&";"&SPALTE($I15)&";"&SPALTE($L15))
'Aus soffice[Tools]:
'Function ArrayOutOfString(BigString, Separator as String, Optional
MaxIndex as integer)
'Also (ungetestet):
Function NotenSchnittGewichtetOO( Tabelle As Variant,_
Zeile as Integer,_
Gewichtzeile As Integer,Spalten as String)
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Dim Idx as Integer
Dim Zaehlersumme As Double
Dim Nennersumme As Double
Dim Spalte As Integer
Dim Gewicht As Double
Dim NotenSpalten() As Variant
Notenspalten=ArrayOutOfString(Spalten,";")
Doc = ThisComponent
Sheet = Doc.CurrentController.ActiveSheet
Zaehlersumme = 0
Nennersumme = 0
For Idx = 0 To UBound(NotenSpalten())
Gewicht = Sheet.getCellByPosition(NotenSpalten(Idx),
Gewichtzeile-1).Value
Cell = Sheet.getCellByPosition(NotenSpalten(Idx), Zeile-1)
if Cell.Value > 0 then
Zaehlersumme = Zaehlersumme + Cell.Value * Gewicht
Nennersumme = Nennersumme + Gewicht
endif
Next
if Nennersumme = 0 then
NotenSchnittGewichtetOO = 0
else
NotenSchnittGewichtetOO = Zaehlersumme / Nennersumme
endif
End Function
'Achtung Zeilenumbr�che sind sicher durch das Mailprogramm
'ver�ndert!
--
Gruss
Bernd
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]