Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
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

Fehler bei Splitter- Funktion (VBA)

Fehler bei Splitter- Funktion (VBA)
30.07.2016 19:01:42
ViGo
Hallo zusammen,
ich versuche einzelne Strings aus einer Zelle zu lesen. Ein Beispiel für eine Zelle sieht so _ aus:

1;3;6;8;11;13;15;18;21;22;26;27;32;33;35;38
Ich bin durch Suchen auf die Splitter- Funktion gestoßen.
Ich habe bisher folgendes in ein Modul eingetragen:

Function Splitter(Bezug As Range, Trennzeichen As String, Teil As Integer) As String
Dim Ergebnis
Ergebnis = Split(Bezug.Value, Trennzeichen)
Splitter = Ergebnis(Teil - 1)
End Function

Meine Formel ist folgendermaßen hinterlegt:

aa.FormulaLocal = "=Splitter(" & Worksheets("Marktanalyse").Cells(cz, 21) & ","";"", 1)"
ergebnis1.Cells(23, i) = aa

Dabei bekomm ich den Fehler 424: "Objekt erforderlich!" ausgegeben
Achso zur Info: cz speichert die Zeilennummer auf dem richtigen Tabellenblatt "Marktanalyse". Ich möchte, dass im Beispiel aa=1 gesetzt wird und in der entsprechenden Zelle ausgegeben wird.
Habt ihr eine Idee, was hier der Fehler sein könnte?
Viele Grüße, ViGo

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das ist eine Trivial-UDF, die einen Bereich ...
30.07.2016 19:29:50
Luc:-?
…als Argument1 erwartet, ViGo;
dein Fml-Konstrukt schreibt aber den Wert einer Zelle direkt in die Fml, noch dazu ohne An-/Ausführungszeichen (für Text). Du musst die ZellAdresse angeben → Worksheets("Marktanalyse").Cells(cz, 21).Address(0, 0) !
Außerdem erwartet die UDF zwingend ein 3.Argument zur DirektAuswahl eines Werts (das ist auch eine mögliche ZusatzFktionalität meiner UDF Splint, man kann aber auch INDEX um eine andere UDF herumlegen). Desweiteren schreibst du zwar .FormulaLocal, gibst die Fml aber in US-OriginalNotation an. Also wäre hier .Formula angebracht.
Übrigens, mit meiner UDF VSplit (Version1.1) hätte das auch so fktioniert, wenn du die An-/Ausführungszeichen angegeben hättest, denn die ist universeller und nicht trivial, wandelt bei entsprd Argumentierung auch Text- in echte Zahlen um.
Feedback nicht unerwünscht! Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Das ist eine Trivial-UDF, die einen Bereich ...
30.07.2016 20:03:09
ViGo
Hey Luc!
Wow, da war nun viel Info drinnen. Ich weiß nicht, ob ich das nun alles richtig umgesetzt habe. Es sieht nun folgendermaßen aus:
aa.Formula = "=Splitter(" & Worksheets("Marktanalyse").Cells(cz, 21).Address(0, 0) & ","";"",1)"
Das Dritte Argument ist die 1. Also es soll die erste Stelle vor dem Semikolon ausgegeben werden. Oder hab ich das falsch verstanden.
Ich hab dennoch dieselbe Fehlermeldung. Hab ich was übersehen?
Viele Grüße, ViGo
so?
30.07.2016 20:06:43
Michael
Hi,
' in irgendeinem Modul
Sub test()
Dim aa As Range, cz As Long, i As Long
Set aa = Range("E5")
cz = 5
aa.FormulaLocal = "=Splitter(Marktanalyse!" & Cells(cz, 21).Address & ";"";"";1)"
i = 1
Tabelle1.Cells(23, i).Value = aa.Value
End Sub
' in einem allg. Modul
Function Splitter(Bezug As Range, Trennzeichen As String, Teil As Integer) As String
Splitter = Split(Bezug(1).Value, Trennzeichen)(Teil - 1)
End Function
Schöne Grüße,
Michael
Anzeige
AW: so?
30.07.2016 20:32:16
ViGo
Hallo Michael!
Wieso machst du das hier? Bzw. worauf bezieht es sich?
Set aa = Range("E5")

Viele Grüße, ViGo
AW: so?
30.07.2016 20:33:31
ViGo
Also ich weiß, wenn man es ausklammert, dass dann derselbe Fehler kommt. Also ist das dann das Objekt?
AW: so?
30.07.2016 20:44:45
ViGo
Ich hatte mit diesem
Set aa = Range("E5")

das Problem, dass ich nicht wusste, wohin es mir die ausgelesene Zahl schreibt. Nun hab ich da die Zielzelle angeben und es sieht alles richtig aus. Also auch auf den anderen Tabellenblättern!
Somit hast du mein Problem gelöst! Vielen Dank, dass du dir geholfen hast!!! Ich freu mich sehr!!! :) :) :)
Viele Grüße, ViGo
Anzeige
Danke für die Rückmeldung,
31.07.2016 13:34:06
Michael
Hi ViGo,
Du hast uns ja nur den Schnipsel zur Verfügung gestellt:
 aa.FormulaLocal = "=Splitter(" & Worksheets("Marktanalyse").Cells(cz, 21) & ","";"", 1)"
ergebnis1.Cells(23, i) = aa
Zum Testen MUSSTE ich aa ja irgendwie definieren, um es zu testen.
Na gut, Du hast es ja jetzt hinbekommen.
Schöne Grüße,
Michael
Ja, die BlattAngabe hatte ich noch vergessen, ...
31.07.2016 05:38:19
Luc:-?
…Michael,
aber universeller wäre schon das:
aa.Formula = "=Splitter(Marktanalyse!" & Cells(cz, 21).Address(0, 0) & ","";"",1)"
Allerdings wird so immer nur die 1.Zahl aus der Reihe ausgewählt. Es gibt auch UDFs, die alle Zahlen auf 1× oder auch nacheinander zurückgeben und ggf auch als Zahl, nicht als Text wie die beiden Versionen von Splitter (das macht auch eine Trivial-UDF wie Splitt)…
In MatrixFmln kann diese UDF auch nicht sinnvoll eingesetzt wdn (Splint und Splitt übrigens auch nicht).
Morrn, Luc :-?
Anzeige
kommt vor,
31.07.2016 13:40:27
Michael
Luc:-?,
zumal ich aktuelle Threads sehe (mit den eigenen Beiträgen), die durchaus wichtig sind...
Naja, wir wissen beide nicht, was ViGo so bezweckt, aber ich vermute, daß wir das optimierter lösen würden.
Schöne Grüße,
Michael
P.S.: falls ViGo mitliest: anhand einer Beispieldatei und rundumigerer Problembeschreibung könnten wir das aufzeigen...

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige