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