Leere Felder an Makros übergeben?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Leere Felder an Makros übergeben?

von Stephan » Do, 17.08.2006 22:23

@stephan: Nee, ich wollte schon "Tabellenkalkulation" machen
Ja, das war mir klar, meine Frage mit grundsätzlich bezog sich darauf ob Du grunsätzlich wissen wolltest wie Du in einer benutzerdefinierten Funktion feststellst ob eine Zelle leer oder 0 ist.

Geht es hingegen nur um die spezielle benutzerdefinierte Funktion ZUSAMMEN() frage ich mich nach wie vor warum Du nicht VERKETTEN() verwendest, denn das erfüllt genau Deine Anforderungen.

Gruß
Stephan

von Falkan » Do, 17.08.2006 21:41

@toxitom: Klar, ich meinte natürlich

Code: Alles auswählen

if(isblank(a2);"";a2)
.Isblank alleine wäre noch nicht hässlich genug gewesen, um mich an das Forum zu wenden :-)

@stephan: Nee, ich wollte schon "Tabellenkalkulation" machen ;-)

Danke an alle.
-- Holger

von Stephan » Do, 17.08.2006 13:45

Ich möchte doch noch eine Alternative erwähnen(*):

man könnte auch so aufrufen:

=ZUSAMMEN("A1";"A2")

und die Funktion ZUSAMMEN() entsprechend gestalten, dann ließe sich der Inhaltstyp prüfen und ein Wert 0 richtig einordnen.
Natürlich besteht der Nachteil das die Zellbezüge beim Kopieren der Formel nicht angepasst werden, aber vielleicht würde 'Falkan' das ja akzeptieren wollen.

@Falkan
War DEine Frage eher grundsätzlicher Natur? Denn im Speziellen würde doch eine Zellformel:
=VERKETTEN(A1;A2)
oder
=A1&A2

das Gewünschte leisten.



Gruß
Stephan

(*)
Sorry, ich weiß das ihr (Thomas, Winfried) das wisst, nur vielleicht hättet ihr es erwähnen können, denn es könnte ja sein das die Lösung ggf. akzeptabel ist

von komma4 » Do, 17.08.2006 13:09

Mist, Thomas, da hast Du recht....

von Toxitom » Do, 17.08.2006 12:57

Hallo Wilfried,
dann zieht "meine" Prüfung aber korrekt.
Leider nicht. Die ist nämlich immer erfüllt! Lies noch mal den Thread von ganz vorne: Auch wenn die Zelle Leer ist, nimmt "a" den Wert "0" an, die Variable "a" ist also nie leer, wenn sie übergeben wird.

@ Falkan:

dann mussst du die Prüfung tatsächlich in die Tabelle verlegen. Mit der Funktion ISTLEER() oder eben ISBLANK(). Allerdings scheint mir dein Code nicht zu funktionieren:

Code: Alles auswählen

=zusammen(isblank(a1;"";a1);isblank(a2;"";a2))
die Funktion erwartet ja nur einen Parameter - nicht drei. funktionieren würde es mit einer "Wenn" Formel:

Code: Alles auswählen

=Zusammen(wenn(istleer(a1);"";A1);wenn(istLeer(a2);"";a2))
so sollte es funktionieren.

Gruss
Thomas

von komma4 » Do, 17.08.2006 11:29

...wenn die Null als Eingabe vorkommen kann, dann zieht "meine" Prüfung aber korrekt.

Wenn eine Eingabe vorhanden ( a > "" ) , dann wird diese bearbeitet.

von Falkan » Do, 17.08.2006 10:05

Danke für die Antworten!

Ich hatte vergessen zu sagen, dass in meinem Anwendungsfall der String durchaus "0" sein kann, d.h. ich muss zwischen "0" und "" unterscheiden können.

Muss ich also bei meiner Krücke bleiben...

Gruß
-- Holger

von komma4 » Mi, 16.08.2006 19:33

Verlege die Prüfung in die Funktion:

Code: Alles auswählen

function zusammen( a as string, b as string ) as string

if NOT ( a > "") then
  a = ""
end if
' .... more code to come
Ist das "schöner"?

von Toxitom » Mi, 16.08.2006 19:29

Hey Falkan,

Geht das schöner?
Nein, nicht in deiner Konstellation. Eine Zelle kann 4 Inahltstypen aufnehmen: Texte (Strings), Werte (Zahlen, Datum- und Zeitwerte), Formeln und - eben nichts. Das "Nichts" wird intern als eigener Zustand verwaltet, als "leere" Zelle sozusagen.
Mit dem Zellbezug =A1 wird nun der interne Interpreter angewiesen, den Inhalt auszulesen und entsprechend aufzubereiten. Das "Nichts" ist eben auch ein Zustand. Im Makro selbst fragst du den Textzustand ab (a as string) - und der ist eben "0" - als Ergebnis der leeren Zelle.

Entweder fängst du das Ergebnis im Makro selbst ab oder eben so, wie du das gemacht hast. Wahrscheinlich wäre die Makrolösung bequemer.

Code: Alles auswählen

function zusammen( a as string, b as string ) as string
  if a = "0" then a = ""
  if b = "0" then b = ""
  zusammen = a & b
end function
Gruss
Thomas

Leere Felder an Makros übergeben?

von Falkan » Mi, 16.08.2006 18:42

Hallo,

wenn ich ein Makro aufrufe, bekommt dieses eine "0" übergeben, wenn das Feld leer ist. Wenn die Funktion mit Strings arbeiten soll, ist das nicht das gewünschte.

Beispiel:

Code: Alles auswählen

function zusammen( a as string, b as string ) as string
  zusammen = a & b
end function
Ich helfe mir momentan damit, dass ich in die Zelle anstatt:

Code: Alles auswählen

=zusammen(A1;A2)
das folgende schreibe

Code: Alles auswählen

=zusammen(isblank(a1;"";a1);isblank(a2;"";a2))
Geht das schöner?

Grüße
Falkan

Nach oben