=istformel(z1s1)

Deine Formeln und die Namensdefinition habe ich eingegeben
und es funktioniert auch so, wie angekündigt. Nur leider
brauche ich genau die Unterscheidung zw. „Formel“ und „Wert“,
die durch verwendete Funktion nicht gegeben ist.

Hallo Thomas,

dann misch doch beide:

Tabellenblatt: C:\Test\[kwa1.xls]!Tabelle3
 │ A │ B │
──┼───┼────────┤
1 │ 4 │ Zahl │
──┼───┼────────┤
2 │ 0 │ Formel │
──┼───┼────────┤
3 │ r │ Text │
──┴───┴────────┘
Benutzte Formeln:
A2: =A5
B1: =WENN(ZELLE("Typ";A1)="l";"Text";WENN(Form;"Formel";"Zahl"))
B2: =WENN(ZELLE("Typ";A2)="l";"Text";WENN(Form;"Formel";"Zahl"))
B3: =WENN(ZELLE("Typ";A3)="l";"Text";WENN(Form;"Formel";"Zahl"))


Festgelegte Namen:
Form: =ZELLE.ZUORDNEN(48;Tabelle3!$A1) \*rel. Name, so gültig in B1

A1:B3
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard

1 Like

Hallo barul76,
das wäre schön gewesen. Ich habe es gerade ausprobiert und es klappt schon im Tabellenblatt nicht, weil Excel offensichtlich nicht den (Formel-)Inhalt der fraglichen Zelle als Argument benutzt sondern das Ergebnis der Ausrechnung.
Vielen Dank trotzdem und auch ein schönes WE
Thomas

das wäre schön gewesen. Ich habe es gerade ausprobiert und es
klappt schon im Tabellenblatt nicht, weil Excel offensichtlich
nicht den (Formel-)Inhalt der fraglichen Zelle als Argument
benutzt sondern das Ergebnis der Ausrechnung.

Hallo Thomas,

auch das mit dem „=“ geht, aber reichen meine anderen Vorschläge nicht aus? Du kannst unterscheiden zwischen Text, Zahl, Formel, was fehlt dir noch?

So geht das mit „=“

Tabellenblatt: [Mappe1]!Tabelle1
 │ A │ B │
──┼───┼────────┤
1 │ 4 │ keine │
──┼───┼────────┤
2 │ 0 │ Formel │
──┼───┼────────┤
3 │ r │ keine │
──┴───┴────────┘
Benutzte Formeln:
A2: =A5
B1: =WENN(LINKS(Form2;1)="=";"Formel";"keine")
B2: =WENN(LINKS(Form2;1)="=";"Formel";"keine")
B3: =WENN(LINKS(Form2;1)="=";"Formel";"keine")

Festgelegte Namen:
Form2: =ZELLE.ZUORDNEN(41;Tabelle1!$A1) \*rel. Name, so gültig in B1

A1:B3
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard

Hallo Reinhard,
da hätte ich auch selber drauf kommen können ( wenn ich komplett begriffen hätte, warum Du den Umweg über den definierten Namen gewählt hast - ich glaube Du hast mich erfolgreich verwirrt!! ).
Jedenfalls scheint das ja im Blatt hinzuhauen.
Ich werde dann in Ruhe am WE probieren, ob das auch mit der bedingten Formatierung zu kombinieren geht.
Herzlichen Dank und schönes Wochenende
Thomas

da hätte ich auch selber drauf kommen können ( wenn ich
komplett begriffen hätte, warum Du den Umweg über den
definierten Namen gewählt hast - ich glaube Du hast mich
erfolgreich verwirrt!! ).

Hallo Thomas,
Namen benutzt man aus vielerlei Gründen, z.B. MwST für einen Steuersatz, den kann dann in der Ganzen Mappe benutzen, ändert sich der Satz, ändert man das nur einmalig im Namen.

Auch Lange Formeln in einem namen zuspeichern, dann kann man die lange Formel in vielen tuasend Zelle aber die Mappe wird nicht so groß wie normal.

Mein Grund hier war aber ein anderer, ich benutzt den alteb Excel4-Befehl Zelle.Zuordnen, der funktioniert in Namen, nicht direkt in Zellen.

Gruß
Reinhard

Hallo Reinhard,
jetzt wird es mir einigermaßen klar…
Dabei hatte ich mich von der ganzen Namens-Arie losgesagt, als ich gemerkt hatte, dass ( zellenbezogene ) Namen nicht mehr funktionieren, wenn man Spalten einfügt oder löscht. Das beißt sich zu oft mit diversen VBA-Lösungen.
Schade, dass Microsoft die alten Funktionen nicht mehr unterstützt ( außer in Namen ).
Ich hatte auch die zarte Hoffnung, dass dies auch in der bedingten Formatierung als Relikt noch unterstützt wird, aber ein Versuch hat mich eines „Besseren“ belehrt.
Vielen Dank für Deine Erklärung.
Bis demnächst
Thomas

Hi,

wie wäre es mit einer benutzerdefinierten Funktion? Dieser Code

Public Function FormelInZelle(d As Range) As Boolean 'MH 11.02.11
 If d.Cells.Count = 1 Then \_
 FormelInZelle = d.HasFormula
End Function 'FormelInZelle

kommt in ein Modul in der betreffenden Arbeitsmappe.

Beim Texten erhebt sich bei mir die Frage: warum funktioniert er nur in einem extra eingefügten Modul und nicht in DieseArbeitsmappe?

HTH.

Markus

Hallo Thomas,

Dabei hatte ich mich von der ganzen Namens-Arie losgesagt,
als ich gemerkt hatte, dass ( zellenbezogene ) Namen nicht
mehr funktionieren, wenn man Spalten einfügt oder löscht.

ja; Spalten einfügen, löschen, ärgert mich auch daß da nichtmal Vba was mitbekommt auf direktem Weg, wie auch von anderen Ereinissen.

beißt sich zu oft mit diversen VBA-Lösungen.

In Einzelfragen kannste ja mal nachfragen, sehr gelegentlich kann man da tricksen, workaround o.ä.

Schade, dass Microsoft die alten Funktionen nicht mehr
unterstützt ( außer in Namen ).

Verstehe ich auch nicht, oder neue gleichwertige Funktionen anzubieten, wie z.B. die Zellfarbe ermitteln, ohne Vba geht das nur mit den alten Excel4-Befehlen, die ja letztlich auch Makro-Befehle sind, damals war grad hier die Makrosprache deutsch, Vba kam später auf den Markt.

Ich hatte auch die zarte Hoffnung, dass dies auch in der
bedingten Formatierung als Relikt noch unterstützt wird, aber
ein Versuch hat mich eines „Besseren“ belehrt.

? über Namen indirekt auf Zelle.Zuordnen(…) zuzugriefen geht nicht?
Okay, dann schreibt man halt den namen in eine Hilfszelle und wertet die aus.

Vielen Dank für Deine Erklärung.

Gerne.

Gruß
Reinhard

wie wäre es mit einer benutzerdefinierten Funktion? Dieser
Code
kommt in ein Modul in der betreffenden Arbeitsmappe.

Beim Texten erhebt sich bei mir die Frage: warum funktioniert
er nur in einem extra eingefügten Modul und nicht in
DieseArbeitsmappe ?

Hallo Markus,

wieso, wie nachstehend zu sehen klappt das doch auch wenn der Code in "Diese Arbeitsmappe steht *lol*

Gut, bin da nicht so der Theoretiker, ich teste und hab dann das Aha-Lernen. Aha, da klappts, da nicht.

Modul1, Modul2, Modul3 usw. ( oder egal wie sie heißen wenn man sie umbenennt) alles Standardmodule, öfters von Profis auch als basMain bezeichnet.

Da gehören an sich alle „normalen“ Subs und alle Funktionen hinein.
Dort werden sie auch gefunden, d.h. Subs mit Alt+F8 in Excel, oder Funktionen über Einfügen–Funktion–Benutzerdefiniert.

Deine Funktion wird nur gefunden, bzw. taucht auf der Liste auf, wenn sie in einem Standardmodul steht.

Subs werden auch gefunden wenn sie in „DieseArbeitsmappe“ oder Tabelle1 stehen, finde ich inkonsequent von Excel, aber egal.
DieseArbeitsmappe, Tabelle1, Tabelle2, usw. sind Klassenmodule.

Wenn du noch nie ein Klassenmodul geschrieben hast, die gibt es auch in Word, nimm mal an, du hast auf einer Userform oder im Tabellenblatt 56 CommandButtons, so daß der User dadurch durch einen Klick immer eine der 56 Farben wozu auch immer auswählen kann.

Normalerweiser müßtest du dann im Modul des Blattes 56 mal Code für das Clickereignis der 56 CBs schreiben. Da kommt das Klassenmodul ins Spiel.
Darein kommt recht wenig Code, der dir aber für in dem Fall CommandButtons die gleiche Funktionalität bietet wie z.B.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
im Modul „DieseArbeitsmappe“.
Analog zu Sh erhälst du den Namen der geklickten CommandButtons und kannst dies leicht auswerten.

Gut, bin grad wieder mal abgeschweift, wenn du Interesse hast kann ich dir einen Link nennen, da wird Klassenmodul sehr gut erklärt.
(Da lese ich immer nach wenn ich eines bastle, weil so richtig kapiert habe ich das nicht, sodaß ich das frei Hand bzw. Kopf basteln könnte, machte es aber auch erst so 3-4 Mal.

Vielleicht meldet sich ja noch jmd., der dir den Hintergrund warum Funktionen in Diese Arbeitsmappe nicht in Excel funktieren sagen kann.

Gruß
Reinhard

Sub test()
MsgBox FormelInZelle(Range("A1"))
End Sub

Public Function FormelInZelle(d As Range) As Boolean 'MH 11.02.11
 If d.Cells.Count = 1 Then \_
 FormelInZelle = d.HasFormula
End Function 'FormelInZelle

Hi all,

ich hatte gerade gesehen, daß meine Funktion auch dann FALSE zurückliefert, wenn mehr als eine Zelle markiert ist. Deshalb muß der Code lauten

Function FormelInZelle(d As Range) As Boolean 'MH 11.02.11
 If d.Cells.Count = 1 Then
 FormelInZelle = d.HasFormula
 Else
 FormelInZelle = Null
 End If 'd.Cells.Count=1
End Function 'FormelInZelle

Der liefert dann WAHR oder FALSCH, wenn die referenzierte Zelle eine Formel oder einen Wert enthält, und #WERT!, wenn mehr als eine Zelle referenziert wird.

@Reinhard:

Der Anfrager will mit bedingter Formatierung irgendwas erreichen. Also muß seine Funktion etwas zurückliefern. Also kommt m.E. nur eine FUNCTION in Betracht.
Ich wollte ihm das Einfügen eines Moduls ersparen und habe deshalb versucht, die FUNCTION in DieseArbeitsmappe unterzubringen. Aber da arbeitet sie nicht, und SUBs liefern nichts zurück (daß SUBs dort funktionieren, weiß ich).

…wenn du Interesse hast kann ich dir einen Link nennen, da wird Klassenmodul sehr gut erklärt

Interessiert mich sehr. Mach das aber doch bitte hier. Ich glaube, die anderen sind genauso interessiert wie ich.

Gruß

Markus

1 Like

Halo Markus,

Ich wollte ihm das Einfügen eines Moduls ersparen und habe
deshalb versucht, die FUNCTION in DieseArbeitsmappe
unterzubringen. Aber da arbeitet sie nicht, und SUBs liefern
nichts zurück (daß SUBs dort funktionieren, weiß ich).

sorry, genaueres weiß ich auch nicht. Es geht halt nicht. Vielleicht weiß sowas Thomas Ramel.

…wenn du Interesse hast kann ich dir einen Link nennen, da wird Klassenmodul sehr gut erklärt

Interessiert mich sehr. Mach das aber doch bitte hier. Ich
glaube, die anderen sind genauso interessiert wie ich.

Okay, hier:

http://www.online-excel.de/excel/singsel_vba.php?f=50

Gruß
Reinhard

Hallo Reinhard,

danke für den Link.

 

http://www.online-excel.de/excel/singsel_vba.php?f=50

Die zugehörige Gruppen-Seite findet sich auch unter

 

http://www.online-excel.de/excel/grusel_vba.php?f=7

Ich nehme an, hier war der Weltgeist wieder mal tätig. Wie bei der Ölpest an der Nordseeküste, wo herauskam, daß der damalige Pressereferent im Fischereiministerium Peter Bradhering hieß.

Gruß

Markus

Hi,

wenn du alle Formeln sehen willst, dann drücke einfach dit Tasten - Kombination: STRG #
Excel zeigt dir alle Formeln in den Spalten, wenn du die Tasten - Kombination wieder drückst, siehst Du die Zellenwerte der Formelfelder wieder.

Klaus

Hallo ganz_und_gar,
das ist auch ein interessanter Hinweis.
Da ich aber die Funktionalität zur einheitlichen Gestaltung verschiedener Rechenblätter nutzen ( fest in meine allgemeine Vorlage einbinden )will, tendiere ich zu der untenstehenden VBA-Lösung.
Trotzdem vielen Dank und schönes Rest-WE
Thomas

perfekt!
Hallo Markus,
Deine Lösung habe ich gerade ausprobiert ( auch in Verbindung mit bed. Formatierung ) und bin begeistert --> klappt hervorragend.
Folglich werde ich den Code in meine Vorlage zur Erstellung von Anwender-Rechenblättern einbinden.
Eine noch komfortablere Anwendbarkeit wäre wohl nur noch durch eine entsprechende Zellen-FormatVorlage möglich. Aber da wird man wohl bei Microsoft lange drauf warten müssen.
Also vielen herzlichen Dank.
Einen schönen Sonntag wünscht
Thomas

vielen Dank an alle Mitwirkenden
Hallo,
an dieser Stelle möchte ich allen Beteiligten für die hilfreichen Tips zum Thema danken.
Freundliche Grüße
Thomas

-)

Hallo Reinhard,
tja, in die alte Makrosprache von Excel hatte ich mich auch ( ansatzweise ) eingearbeitet. War auch recht umfangreich und kompliziert. Als ich dann mitkriegte, dass diese nicht mehr unterstützt werden sollte war ich dann nachhaltig gefrustet und verwirrt. Das hält bis heute an :frowning: Es kommen immer wieder bruchstückhafte Erinnerungen hoch.
Ich finde es sehr traurig, dass Microsoft so grundlegende Funktionalität wie die Zelle.zuordnen-Befehle völlig in der Versenkung verschwinden lässt und dafür dann sehr spezielle Funktionen entwickelt, die kaum jemand braucht. Aber darauf können wir wohl keinen Einfluss nehmen.
Gut, dass man da so einen tollen Support im Forum hat.
Vielen Dank, Reinhard.
Freundliche Grüße aus Oldenburg
Thomas

Wie watt? Moment, ich brauch dich, Stoooop

tja, in die alte Makrosprache von Excel hatte ich mich auch (
ansatzweise ) eingearbeitet. War auch recht umfangreich und
kompliziert.

Hallo Thomas,

bislang konnte ich nicht rauskriegen was ich da machen soll wenn ich in
Excel über Einfügen Blatt eine Excel4 Makrovorlagen blatt einfüge.
Danns chreibe ich da in die Zellen die alten Makro4-Befehle, und dann, wie starte ich denn da so was?

Hast du zufällig irgendwelche Musterblätter?

Nachfragen hier und in Excelforen brachten mich in dem Punkt nicht weiter. Und wenn da gar nix mehr ginge, wieso kann man da so eine makro-Vorlage noch als Blatt einfügen?

Gruß
Reinhard

Hallo Reinhard,
es wäre mir eine große Freude, wenn ich Dir helfen könnte. Leider sind meine Kenntnisse wirklich nicht sehr umfangreich gewesen und das Meiste habe ich wieder vergessen.
Eine alte global.xls von 1998 mit Aufrufen einzelner Makros von VBA aus habe ich noch gefunden. Das ging so: >>Application.Run Macro:=Range(„von_auto_öffnen“)

es wäre mir eine große Freude, wenn ich Dir helfen könnte.
Leider sind meine Kenntnisse wirklich nicht sehr umfangreich
gewesen und das Meiste habe ich wieder vergessen.

Eine alte global.xls von 1998 mit Aufrufen einzelner Makros
von VBA aus habe ich noch gefunden. Das ging so:
>>Application.Run Macro:=Range(„von_auto_öffnen“)