=istformel(z1s1)

Hallo,
hat es einmal eine Funktion gegeben, die prüft, ob eine Zelle einen Konstantwert oder eine Formel enthält oder war das nur ein Wunschtraum von mir? Ich würde diese Funktion gerne in Verbindung mit der bed. Formatierung verwenden, um sofort zu sehen, welche Zellen eine Formel enthalten.
Vielleicht gibt es ja ´was in der Art oder Jemand hat eine Idee für ein workaround.
Danke für Dein Interesse.
Freundliche Grüße
Thomas

hat es einmal eine Funktion gegeben, die prüft, ob eine Zelle
einen Konstantwert oder eine Formel enthält oder war das nur
ein Wunschtraum von mir? Ich würde diese Funktion gerne in
Verbindung mit der bed. Formatierung verwenden, um sofort zu
sehen, welche Zellen eine Formel enthalten.

Hallo Thomas,

=Zelle(„Typ“);a1) ist dafür nu begrenzt nutzbar,

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

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

A1:C3
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard

so ähnlich
Hallo Reinhard,
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.
Trotzdem vielen Dank.
Einen schönen Tag wünsche ich Dir
Thomas

Wie wäre es denn mit Prüfung auf ‚‘=’’
Hi !

Soweit mir bekannt ist, fangen in Excel die Formeln alle mit einem Gleichheitszeichen an. Und in Zellen mit Festwerten, sind solche nicht zu finden.

Wenn man die bedingte Formatierung also einfach mit =LINKS(…) prüfen läßt, ob da ein „=“ ist, dann müßte es doch klappen?

BARUL76

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

-)