=?ISO-8859-15?Q?Re=3A_=5Bde-users=5D_Zelle_als_Referenz_?= =?ISO-8859-15?Q?an_Basicfunktion_=FCbergeben?=

2005-03-16 Diskussionsfäden huas
Hi Marc
Marc Santhoff wrote:
Am Mi, den 09.03.2005 schrieb [EMAIL PROTECTED] um 23:35: 
 

Hoi Marc
   

Moin moin,
[...] 
 

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 
   

Syntaxfehler finden. Aber eine erweiterte Typprüfung u.a. würde ich auch
begrüßen...
 

Nun also bei mir bewirkt dieser Knopf Basic Macro neu übersetzen 
absolut nichts. Es werden
weder vergessene Klammern noch falsch geschriebene Variablen gefunden. 
Aber eben, ev habe
ich da wirklich eine schlechte OO-Version mit SUSE 9.1 bekommen.

haufenweise Meldungen von Laufzeitfehlern (die ich übrigends inzwischen 
gefunden habe - eine Pause bewirkt manchmal Wunder) wenn ich 
Ctrl-Shift-F9 anwende.
   

Es gibt Firmen, die werfen Dich nach 12 Stunden Arbeit einfach raus in
den Feierabend.
Nützt auch nichts, wenn man zu Hause weitermacht .. :-)
Ist auch ökonomisch sinnvoll, sonst erzeugt man durch
die Fehler, die man übermüdet macht, zusätzliche Mehrarbeit.
 

Ist schon so...
 


 

- Dauernd Totalabstürze
  

   

Da dürfte nicht sein. Kannst Du irgendwie feststellen, welche Aktion den
Absturz provoziert?
 

Dies hatte immer mit diesen Laufzeitfehlern, Div durch 0 oä zu tun.
Wenn das Dokument nach einem Absturz wieder geöffnet wird, wird es 
wieder hergestellt, die Basicfunktionen werden aber
aus dem Sheet nicht mehr gefunden (sind aber in der Basic-IDE). Erst 
wenn das Dokument geschlossen und erneut geöffnet wird gehen diese wieder.
   

Tja, dabei kommt es wohl drauf an, an welcher Stelle der Absturz
passiert. Im ungünstigen Fall eben wie bei Dir. Wenn allerdings etwa
eine Division durch Null in aktuellen Versionen (1.1.3/4 bzw. 2.0Beta)
reproduzierbar ABstürze erzeugt, sollte man dringend diesen Fehler
melden (-- Issue schreiben).
 


 

- Obwohl man in Basic etwas ändert wird dies vom Sheet nicht übernommen. 
Man hat das Gefühl, dass irgendwo noch auf eine alte Version zugegriffen 
wird. Plötzlich wird die eigene Basic-Routine auch nicht mehr erkannt. 
Obwohl man einen Breakpoint setzt wird dieser oft gar nicht erreicht 
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.
  

   

Hört sich ja schrecklich an. Wenn der Fehler im BASIC passiert solltest
Du die IDE geöffnet und die betreffende Zeile angezeigt bekommen. Welche
Version von OOo und welches Betriebssystem benutzt Du denn?
 

Ist es auch.
Ich habe OO 1.1.1 unter Suse 9.1
Wäre schön, wenn die fehlbare Zeile angezeigt würde. (Basic-IDE habe ich 
logischerweise offen).
Meist wird aber gar nichts von Baisc angezeigt. Manchmal überlagert sich 
ein Teil des Basic-Codes mit dem Sheet.
Nur einmal konnte ich erkennen welche Zeile markiert war.
Frage nebenbei. Bilder (Screenshots) sollte man wohl hier nicht mitschicken?
   

Klingt nach einem Problem mit der Ressourcenfreigabe und dem inneren
Zustand des BASIC-Interpreters. Als erstes würde ich mal eine neuere
Version testen. Und vor allem das Original statt der Suse-Verson, wäre
nicht das erste mal, das ein Distributor einen schlechten Job bei der
eigenen Anpassung von OOo gemacht hat.
Soweit ich weiß gibt es verschiedene Pläne für die Renovierung der IDE,
aber mit der 2.0 wird das sicher nix.
 


 

Das grosse Manko, dass Zellen nur als CallByValue übergeben werden kann 
leider nur mit grossem Aufwand und gebastel umgangen werden.
  

   

Ohne den Quelltext zu sehen, wird man Dir schwer helfen können.
 

Quelltext aus dem Original Excel-VBA ?
   

Ich meinte den OOo-Quelltext. Passiert mir auch öfter, das ich Fehler
nicht mehr entdecke, die jemand anders auf den ersten Blick findet. Aber
scheinbar hast Du die Probleme ja bereits im Griff.
 

Durch Deinen Anstoss nahm ich noch einmal einen Anlauf und konnte nun 
eine profisorische Lösung finden (Zwar noch nicht in allen Details 
getestet).

Hier meine Lösung mit OO:
   

[...Quelltext gelöscht...]
Das sieht wirklich fürchterlich aus. Leider habe ich im Moment nicht so
viel Zeit übrig, um mich damit weitergehend auseinanderzusetzen, aber
hast Du mal den Thread:
[de-users] Calc: Gewichteter Mittelwert
gelesen? Sieht aus, als wäre das exakt was Du erreichen willst,
allerdings ohne Makro dafür mit einer Hilfsspalte.
 

Habe diesen Thread angeschaut, ist aber gar nicht was ich brauche. Mein 
Fall ist

=?ISO-8859-15?Q?Re=3A_=5Bde-users=5D_Zelle_als_Referenz_?= =?ISO-8859-15?Q?an_Basicfunktion_=FCbergeben?=

2005-03-16 Diskussionsfäden huas
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


Re: [de-users] Zelle als Referenz an Basicfunktion bergeben

2005-03-09 Diskussionsfäden huas
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 
haufenweise Meldungen von Laufzeitfehlern (die ich übrigends inzwischen 
gefunden habe - eine Pause bewirkt manchmal Wunder) wenn ich 
Ctrl-Shift-F9 anwende.

 

- Dauernd Totalabstürze
   

Da dürfte nicht sein. Kannst Du irgendwie feststellen, welche Aktion den
Absturz provoziert?
 

Dies hatte immer mit diesen Laufzeitfehlern, Div durch 0 oä zu tun.
Wenn das Dokument nach einem Absturz wieder geöffnet wird, wird es 
wieder hergestellt, die Basicfunktionen werden aber
aus dem Sheet nicht mehr gefunden (sind aber in der Basic-IDE). Erst 
wenn das Dokument geschlossen und erneut geöffnet wird gehen diese wieder.

 

- Obwohl man in Basic etwas ändert wird dies vom Sheet nicht übernommen. 
Man hat das Gefühl, dass irgendwo noch auf eine alte Version zugegriffen 
wird. Plötzlich wird die eigene Basic-Routine auch nicht mehr erkannt. 
Obwohl man einen Breakpoint setzt wird dieser oft gar nicht erreicht 
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.
   

Hört sich ja schrecklich an. Wenn der Fehler im BASIC passiert solltest
Du die IDE geöffnet und die betreffende Zeile angezeigt bekommen. Welche
Version von OOo und welches Betriebssystem benutzt Du denn?
 

Ist es auch.
Ich habe OO 1.1.1 unter Suse 9.1
Wäre schön, wenn die fehlbare Zeile angezeigt würde. (Basic-IDE habe ich 
logischerweise offen).
Meist wird aber gar nichts von Baisc angezeigt. Manchmal überlagert sich 
ein Teil des Basic-Codes mit dem Sheet.
Nur einmal konnte ich erkennen welche Zeile markiert war.
Frage nebenbei. Bilder (Screenshots) sollte man wohl hier nicht mitschicken?

 

Das grosse Manko, dass Zellen nur als CallByValue übergeben werden kann 
leider nur mit grossem Aufwand und gebastel umgangen werden.
   

Ohne den Quelltext zu sehen, wird man Dir schwer helfen können.
 

Quelltext aus dem Original Excel-VBA ?
Durch Deinen Anstoss nahm ich noch einmal einen Anlauf und konnte nun 
eine profisorische Lösung finden (Zwar noch nicht in allen Details 
getestet).

Hier meine Lösung mit OO:
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
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
 ' Array mit gültigen Argumenten füllen   
 NotenSpalten = getParamArray( Arg0, Arg1, Arg2, Arg3, Arg4, Arg5,
   Arg6, Arg7, Arg8, Arg9, _
 Arg10, Arg11, Arg12, Arg13, Arg14,
   Arg15, Arg16, Arg17, Arg18, Arg19 )

 Doc = StarDesktop.CurrentComponent
 Sheet = 

Re: [de-users] Zelle als Referenz an Basicfunktion übergeben

2005-03-04 Diskussionsfäden huas
Hallo Jörg
Jörg Schmidt wrote:
Hallo,
 

Genau um diesen Artikel geht es. Auf Seite 24 (Kapitel 10.2) schreibt
er, dass keine Möglichkeit besteht auf das Zellobjekt
zuzugreifen. Der
darunter erwähnte Workaround mit Strings ist keine Lösung,
weil dann im
Sheet die Zellen nicht mehr relativ (über Kopieren etc.) angegeben
werden können. Das Einfügen einer Zeile oder Spalte etc.
würde das ganze
Sheet durcheinander bringen.
   

richtig
 

Das kanns doch nicht sein.
   

ist es auch nicht. Nur wenige Zeilen tiefer gibt es ein Beispiel für
eine Funktion (Summentest()), die so funktioniert, wie Du Dir das
vorstellst(?). 

Eben nicht, weil sie nur mit Zellinhalten operiert.
Jederzeit ist das Verschieben, Einfügen von Zellen etc.
möglich ohne das die Funktion beeinträchtigt würde. Das einzige
Mißverständnis könnte ich jetzt höchstens darin sehen das im
erläuternden Text von Zellbereich die Rede ist, bloß natürlich kann ein
Zellbereich auch nur aus *einer* Zelle bestehen.
Ansonsten kannst Du Argumente doch *zumindest* mit den Funktionen
Zeile() und Spalte() in die Argumentenliste Deiner Funktion so
übergeben, das Du die Koordinaten ggf. auch eines oder mehrerer
Bereiche auslesen kannst und die Formel beim Kopieren variablel bleibt.
(Die Funktion Zelle() verhält sich bezüglich Bereichen und dem Parameter
ADDRESS nicht so wie beschrieben(?), sonst wäre auch diese verwendbar.)
Beispiel:
function Test (x,y)
msgbox x  y
end function
Aufrufen mit:
=TEST(SPALTE(C3);ZEILE(C3))
 

Dies würde soweit tatsächlich gehe (Danke), ist aber nicht gerade 
elegant und bei vielen Zellen recht mühsam. Aber im Notfall 
Nur wie kann ich denn herausfinden, in welchem Sheet die Zelle ist, 
damit ich in der gleichen Tabelle auf andere Informationen zugreiffen 
kann? Wenn keine Zellreferenz übergeben wird scheint mir dies gänzlich 
unmöglich.

Oder warum nicht?
Mir würde es helfen Dein Ziel zu verstehen wenn Du ein Beispiel hättest,
was gemacht werden soll.
Weil die Diskussion ist nämlich gegenstandslos wenn Du beabsichtigst
eine Koordinate zu ermitteln um aus einer Funktion (die aus einer
Zellformel aufgerufen wird) etwas in eine (andere) Zelle zu schreiben,
denn das geht nicht.
Also, was möchtest Du erreichen?
 

Genau so etwas ähnliches müsste ich haben. Meine Funktion wird z.B. wie 
folgt aufgerufen :
 meineFunktion(8;9;E16;H16;K16;N16;Q16;T16;W16;Z16;AC16;AF16)
Die Informationen (Zahlen) sind in Spalten wobei diese nicht einem fixen 
Raster folgen müssen. In Kopfzeilen sind einige allgemeinen Angaben zu 
der jeweiligen Spalte. Die ersten beiden Zahlen in meiner Funktion sind 
Zeilenreferenzen auf solche Kopfzeilen. Die Inhalte der Zellen müssen 
nun unter Einbezug der allgemeinen Kopfinformationen der jeweiligen 
Spalte zusammengerechnet werden. Dazu muss in der Funktion  
herausgefunden werden, in welcher Spalte die Zelle ist.

Gruß
Jörg

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
 

Gruss
Hansueli


Re: [de-users] Zelle als Referenz an Basicfunktion übergeben

2005-03-04 Diskussionsfäden huas
Hei
Jörg Schmidt wrote:
Hallo,
 

Beispiel:
function Test (x,y)
msgbox x  y
end function
Aufrufen mit:
=TEST(SPALTE(C3);ZEILE(C3))

 

Dies würde soweit tatsächlich gehe (Danke), ist aber nicht gerade
elegant und bei vielen Zellen recht mühsam. Aber im Notfall 
Nur wie kann ich denn herausfinden, in welchem Sheet die Zelle ist,
   

na indem Du so aufrufst:
=TEST(SPALTE(Tabelle2.C3);ZEILE(Tabelle2.C3))
 

Damit weiss ich doch noch lange nicht in welchem Sheet ich bin? Wohl 
gemerkt, aus meiner Basic-Funktion heraus!

 

damit ich in der gleichen Tabelle auf andere Informationen zugreiffen
kann? Wenn keine Zellreferenz übergeben wird scheint mir dies
gänzlich
unmöglich.
   

Eine Zellrefrenz ist doch ohnehin da: Zeilennummer und Spaltennummer.
Diese sind doch ganz einfach umzuwandeln (falls das die Frage ist):
Function GetAddress (x, y As INTEGER)
 Dim nb,i As Integer
 Dim AdrStr As String
  AdrStr = 
 nb= (x+1) / 26
  if ( nb = 1 ) then
AdrStr = Chr(64 + Fix(nb))
  end if
 AdrStr = AdrStr+Chr((x mod 26)+65)
 AdrStr = AdrStr+Cstr(y+1)
 GetAddress=AdrStr
End Function
 

Genau so etwas ähnliches müsste ich haben. Meine Funktion
wird z.B. wie
folgt aufgerufen :
 meineFunktion(8;9;E16;H16;K16;N16;Q16;T16;W16;Z16;AC16;AF16)
[...]
   

Mir kommt da jetzt ein ganz anderer Gedanke. Dein Problem ist doch nur
das die Zelladressen in der Funktion variabel bleiben sollen, wenn Du
diese innerhalb einer Calc-Datei in verschiedene Zellen kopierst. Wäre
es nicht eine Möglichkeit das per Makro zu machen, also:
-markiere die Quellzelle (mit der Formel)
-rufe ein Makro auf
-ein Dialog mit Schaltfläche erscheint, wo Du in Zellauswahlmodus
schalten kannst
-markiere die Zielzelle und bestätige
-das Makro rechnet die Formel um und schreibt eine angepaßte Kopie in
die Zielzelle
Funktionieren würde das. Zumindest wärst Du dann der Arbeit enthoben in
der langen Formel alle Zelladressen manuell anzupassen.
 

Na ja, sicherlich ein Szenario. Aber die Referenz auf das Sheet (aus der 
Basic-Funktion) habe ich damit immer noch nicht. Ausser man gibt den 
Tabellennamen auch noch als String mit. Aber damit ist dann zuviel 
gebastel. Das tue ich mir nun wirklich nicht an. Ich verstehe einfach 
nicht, wieso die Macher von OpenOffice - wenn man schon von 
Objektstrukturen spricht - nicht die Möglichkeit vorgesehen haben auch 
Objekte aus dem Sheet an die Basic-Funktion zu übergeben.

Gruß
Jörg

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
 

Besten Dank
Gruss
Hansueli


Re: [de-users] Zelle als Referenz an Basicfunktion übergeben

2005-03-02 Diskussionsfäden huas
Hoi Jörg
Genau um diesen Artikel geht es. Auf Seite 24 (Kapitel 10.2) schreibt 
er, dass keine Möglichkeit besteht auf das Zellobjekt zuzugreifen. Der 
darunter erwähnte Workaround mit Strings ist keine Lösung, weil dann im 
Sheet die Zellen nicht mehr relativ (über Kopieren etc.) angegeben 
werden können. Das Einfügen einer Zeile oder Spalte etc. würde das ganze 
Sheet durcheinander bringen. Das kanns doch nicht sein.

Gruss
Hansueli
Jörg Schmidt wrote:
Hallo,
 

Ich versuche schon seit langem herauszufinden, wie man in Calc eine
Zelle als Referenz (Objekt) an eine eigene Basicfunktion
übergeben kann,
so dass dort auf die Eigenschaften etc. zugegriffen werden kann.
In einem Artikel von Marc Bächinger steht, dass dies gänzlich
unmöglich sei.
   

In welchem Artikel steht das? Link?
Mir ist nur bekannt das sich Marc Bächinger hier:
http://www.bcwin.ch/ooo/basic/calc/calc.html
völlig entgegengesetzt äußert indem er einen Lösungsweg für das
angesprochene Problem darlegt.
Gruß
Jörg

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
 



Re: [de-users] Alternative fr ParamArray inCalc-Basic gesucht

2005-02-09 Diskussionsfäden huas
Danke für die Diskussion.
Im Wesentlichen wurde bereits alles gesagt.
Uebergabe mit String kommt nicht in Frage, da die relativen Zellbezüge 
in der Anwendung dann beim Kopieren der Zelle nicht funktionieren.
Die Parameteranzahl ist natürlich schon endlich, aber kann schon mehr 
als 10 sein.
Die Idee mit den optionalen Parametern ist mir auch gekommen, ist aber 
einfach sehr mühsam, wenn in jeder Funktion zuerst alle
Parameter geprüft werden müssen. Wenn diese wenigstens in einer Schlaufe 
durchgehangelt werden könnten.

Ich werde wohl vorderhand noch eine Weile mit MS-Office 97 leben müssen 
und auf OpenOffice 2.0 hoffen.

Herzlichen Dank
Hansueli
Marc Santhoff wrote:
Am Mi, den 09.02.2005 schrieb Jörg Schmidt um 15:38:
 

Hallo,
Marc Santhoff schrieb:
   

Kennt jemand eine Möglichkeit dies in Calc-Basic zu lösen,
   

so dass die
 

Anzahl Parameter vorher nicht bekannt sein muss?
   

Klar:
function OptionalParam(eins as String, optional zwei as string)
if IsMissing(zwei) then
OptionalParam = Ein Parameter!
else
OptionalParam = eins +   + zwei
end if
end function
=OPTIONALPARAM(1)
- Anzeige:
Ein Parameter!
=OPTIONALPARAM(A; B)
- Anzeige:
A B
 

Tut mir leid, aber so geht es nicht. Deine Lösung taugt nur für eine
vorher bekannte Anzahl von Parametern im Sinne einer maximalen Anzahl.
Wenn es um eine _beliebige_ Anzahl von Parametern geht müssen diese als
ein String mit Trennern übergeben werden.
   

Das muß reichen. ;) Wer hat schon mehr als Zehn Parameter, wenn doch
stimmt IMHO im Design was nicht.
 

Meine gestern vorgeschlagene Lösung funktioniert in diesem Sinne, ist
aber auch nicht optimal, weil sie es z.B. nicht ermöglicht das Du eine
automatische Auswahl mit der Maus in vollem Funktionsumfang ergänzen
kannst.
Ich habe mich vor einigen Monaten sehr mit der Problematik beschäftigt,
insbesondere weil die Einzelparameter Zell_bereiche_ sein können und ich
habe bisher keine wirklich elegante Lösung gefunden.
   

Von elegant habe ich nicht gesagt, aber es ist _eine Lösung_.
Ansonsten hilft hier nur ein RFE weiter (oder ein redesign des
Calc-Sheets).
Gruß,
Marc

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]