Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1236to1240
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Funktion im Direktmodus zum Laufen bringen

Funktion im Direktmodus zum Laufen bringen
Ilka
Hallo,
eine benutzerdefinierte Funktion soll im Direktmodus zum Laufen gebracht werden.
Wie geht man in diesem Fall in Excel 2010 vor?
Gruß
Ilka Maria

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Direktfenster?
17.11.2011 08:48:49
Erich
Hi Ilka Maria,
meinst du das Direktfenster (Strg+G), wenn du vom Direktmodus schreibst?
Was meinst mit "zum Laufen gebracht"? Was willst du erreichen?
Ist in früheren XL-Versionen etwas anders?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Nein, wie eine Formel
17.11.2011 09:01:15
Ilka
Hallo Erich,
vielen Dank für Deine Rückfrage.
Ich meine, dass man die Funktion wie eine Formel im Tabellenblatt verwenden kann.
Der Weg dazu ist mir bisher unbekannt.
Gruß
Ilka Maria
AW: Nein, wie eine Formel
17.11.2011 09:04:21
Reinhard
Hallo Ilka,
die Wege sind dir bekannt.
So wie eingebaute Funktionen.
Gruß
Reinhard
Formel oder Funktion
17.11.2011 10:12:36
Erich
Hi Ilka Maria,
zunächst mal zu den Bezeichnungen:
WURZEL(Zahl)
ist eine Funktion, Zahl ist dabei ein Argument, der Funktionsname ist WURZEL.
=7*WURZEL(2)+5
ist eine Formel, die in einer Zelle stehen kann. Eine Formel beginnt mit einem Gleichheitszeichen "=".
An dem Beispiel siehst du auch schon: In Formeln können Funktionen verwendet werden.
Du hst eine benutzerdefinierte Funktion, in VBA definiert?
Wo steht der Code dazu?
Wie heißt die Funktion, welche Argumente (Parameter) braucht sie?
Welchen Typ hat der Funktionswert? (Wie sieht das Ergebnis der Fkt. aus?
Deine Funktion willst du in einer Formel in einer Tabellenzelle verwenden.
Nehmen wir an, deine Fkt. heißt meineFkt, braucht zwei Zahlen als Argumente und liefert eine Zahl als Ergebnis.
Dann kannst du z. B. diese Formel in eine Zelle schreiben:
=1+meineFkt(7;8)
Alles klar?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Formel oder Funktion
17.11.2011 11:05:22
Ilka
Hallo Erich,
ich danke Dir für die präzise Darstellung einer Funktion. Für mich ist dies ein sehr informativer Beitrag, stehe ich doch am Anfang meiner „Excel“-Zukunft.
Dies ist die Funktion, die einem Beitrag entnommen wurde:
Function VERKETTEN_neu(ByRef bereich As Range, Trennzeichen As String) As String
Dim rng As Range
For Each rng In bereich
If rng  "" Then
VERKETTEN_neu = VERKETTEN_neu & rng & Trennzeichen
End If
Next
If Len(VERKETTEN_neu) > 0 Then _
VERKETTEN_neu = Left(VERKETTEN_neu, Len(VERKETTEN_neu) - Len(Trennzeichen))
End Function
Wenn im Tabellenblatt =verketten_neu(A6:J6) eingegeben wird, wird 0 angezeigt obwohl in den Zellen Texte enthalten sind?
a. Worauf ist dies zurückzuführen? Enthält die Funktion einen Fehler?
b. Wie kann man diese Funktion so einrichten, dass diese auch für andere Mappen Gültigkeit erhält?
c. Wie müsste man den Aufrut der Funktion gestalten, wenn man diese aus einer

Sub aufrufen möchte?
Über einen weiteren Beitrag, der den Sachverhalt endgültig klärt, würde ich mich sehr freuen.
Gruß
Ilka Maria

Anzeige
Trennzeichen fehlt?
17.11.2011 11:14:46
robert
=verketten_neu(A6:J6;" ") gilt für Blank, "," gilt für Komma usw...
Gruß
robert
Danke
17.11.2011 11:39:34
Ilka
Hallo Robert,
ich danke für Deinen Hinweis. Wie konnte ich das Trennzeichen nur vergessen!
Einen schönen Tag.
Gruß
Ilka Maria
AW: Formel oder Funktion
17.11.2011 11:16:17
Reinhard
Hallo Ilka,
du kannst deine BDF
(Benutzerdefinierte Funktion) einfügen wie jede eingebaute Excel-Funktion.
Also über Einfügen---Funktion--- (der Weg ist bei XL 2010 ein anderer)
Dort findest du sie unter der Rubrik "Benutzerdefiniert"
Oder in der Liste "Alle"
Dann wird dir auffallen daß du bei
=verketten_neu(A6:J6)
die Angabe des zweiten Arguments vergessen hast, daher die 0.
In Vba aufrufen kannst du sie so:
Sub test()
MsgBox VERKETTEN_neu(Range("A6:J6"), " ")
End Sub

Gruß
Reinhard
Anzeige
AW: Formel oder Funktion
17.11.2011 11:21:51
Reinhard
Hallo Ilka,
du kannst den Prozedurkopf auch so schreiben:
Function VERKETTEN_neu(ByRef bereich As Range, Optional Trennzeichen As String = " ") As String
dann klappt auch
=verketten_neu(A6:J6)
denn wenn der zweite Parameter fehlt wird das Trennzeichen genommen was du hier angegeben hast:
Optional Trennzeichen As String = " "
Existiert der zweite Parameter so wird dieser genommen.
Gruß
Reinhard
Danke
17.11.2011 11:41:15
Ilka
Hallo Reinhard,
vielen Dank für Deine Beiträge.
Auch aus dem Sub heraus funktioniert nun die Funktion.
Einen schönen Tag.
Gruß
Ilka Maria
Anzeige
Fragen und Antworten
17.11.2011 11:30:44
Erich
Hi Ilka Maria,
eine meiner Fragen blieb unbeantwortet: Wo steht der Code deiner Funktion?
Noch eine Frage:
Wo genau steht die Formel =verketten_neu(A6:J6), in welcher Zelle?
Könnte es sein, dass bei dir eine Zirkelbezug-Warnung angezeigt wird?
(Mit so einem Zirkelbezug habe ich die 0 als Funktionswert hinbekommen.)
Der Code ist m. E. nicht fehlerhaft. Ich würde es etwas anders schreiben, aber das ist nicht wesentlich.
Hier gibt es einen Zirkelbezug in A3, in A8 funzt die Funktion prima:
 ABC
1YXW
2   
30  
4   
5   
6YXW
7   
8Y;X;W  

Formeln der Tabelle
ZelleFormel
A3=VERKETTEN_neu(A1:C3;";")
A8=VERKETTEN_neu(A6:C7;";")

zu b) Probiers mal mit Public vor dem Code der Funktion.
zu c) Das könnte man so schreiben (Code in einem "normalen" Modul):

Option Explicit
Public Function VERKETTEN_neu(ByRef rngBer As Range, strTrennz As String) As String
Dim rng As Range
For Each rng In rngBer
If rng  "" Then VERKETTEN_neu = VERKETTEN_neu & rng & strTrennz
Next rng
If Len(VERKETTEN_neu) > 0 Then _
VERKETTEN_neu = Left(VERKETTEN_neu, Len(VERKETTEN_neu) - Len(strTrennz))
End Function
Sub Test()
Dim strT As String
strT = VERKETTEN_neu(ActiveWorkbook.Worksheets(1).Range("A1:J1"), "_")
MsgBox strT
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
fehlendes Trennzeichen?
17.11.2011 11:39:36
Erich
Hi zusammen,
wenn ich bei mir (XL2010) die Formel ohne Trennzeichenparameter, also so
=verketten_neu(A6:J6)
in eine Zelle schreibe, erhalte ich nicht 0, sondern #WERT! als Ergebnis. Ist das bei euch anders?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Danke und Nachfrage
17.11.2011 11:47:40
Ilka
Hallo Erich,
besten Dank für Deine Beiträge.
Ja, auch an meinem PC wird keine 0 sondern diese Fehlermeldung angezeigt.
Kannst Du bitte nochmals auf meine Frage b eingehen?
Wenn ich die Mappe mit der Funktion schließe, dann erscheint bei Benutzerdefinierten Funktionen eben die Funktion nicht mehr und damit ist diese für eine andere Mappe nicht mehr zugänglich.
Wie könnte denn die Lösung in Ex 2010 aussehen?
Gruß
Ilka Maria
Anzeige
PERSONAL.XLSB
17.11.2011 13:28:49
Erich
Hi Ilka Maria,
die Fkt. ist natürlich nicht mehr verfügbar, wenn die Mappe, in der sie steht, nicht offen ist.
Dafür gibt es die PERSONAL.XLSB
Wenn bei dir diese Mappe noch nicht existiert, kannst du sie leicht anlegen, indem du eine Makroaufzeichnung
startest und dabei angibst, dass der Code in der Persönlichen Arbeitsmappe gespeichert werden soll.
Bei nächsten Beenden von Excel wirst du gefragt, ob diese Mappe gespeichert werden soll.
Wenn du "Ja" sagst, wird sie künftig automatisch bei jedem Excel-Start geöffnet.
Deine Fkt. kopierst du in ein Modul der PERSONAL.XLSB (siehst du im VBA-Editor links im Projekt-Explorer).
Dann ist sie immer verfügbar.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Klappt vorzüglich - Danke schön
17.11.2011 14:10:54
Ilka
Hallo Erich,
Deine "Rezepte" sind super. Damit komme ich excellent zurecht.
Ich danke Dir für die zahlreichen Hilfen und Deine Geduld.
Inzwischen weiß ich auch um die Bedeutung von Personal.xlsb.
Einen wunderschönen Tag.
Gruß
Ilka Maria
OT Jetzt nein aber...
17.11.2011 11:57:05
Reinhard
Hallo Erich,
vorhin erschien da eine 0, k.A. was ich da falsch machte.
Ich schiebe das mal auf eine marode mappe *grins*
Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige