Hoi Bernd

Bernd Obermayr wrote:

[EMAIL PROTECTED] schrieb:


Hoi Marc

Marc Santhoff wrote:




Am Mi, den 09.03.2005 schrieb [EMAIL PROTECTED] um 14:58:



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.


Aber eben genau dies funktioniert aus irgendwelchen Gr�nden in meiner Installation nicht.
Dieser Knopf (Basic-Makro-�bersetzen) findet weder Syntaxfehler noch falsch geschrieben
Variablen. Einfach nichts!!!!


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
.....



Du hast schon die Funktion zum �bersetzen des Codes entdeckt?

In der Funktionsleiste das kleine Symbol, das �hnlich wie ein Stapel
aussieht.
[...]



Von diesem spreche ich ja dauernd ...

Obwohl man einen Breakpoint setzt wird dieser oft gar nicht erreicht

Logisch, wenn vorher schon Fehler sind


Nein nein, in diesem Fall ergibt sich weder Fehlermeldung noch Absturz. Es schein einfach, als
w�rde Calc eine alte Version des Basic-Makros aufrufen und meine Aenderungen mit dem Breakpoint
einfach ignorieren.




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.


Schon klar, wurde beachtet. Aber wie kann man eigendlich eine einzelne Zelle mit
Formel neu berechnen lassen. Bei Excel konnte man die Zelle anw�hlen und dann
auf den gr�nen Hacken neben der Eingabezeile klicken. Dies funktioniert aber
hier nicht.


[...]


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 ;)


Ist es auch, weil OO nichts Bessers zur Verf�gung stellt.

<>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)
... Notenspalten=ArrayOutOfString(Spalten,";")

Auch ne M�glichkeit, danke f�r den Tipp. Dadurch wird der Aufruf einfach noch komplizierter.

Gruss
Hansueli

Antwort per Email an