Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Formel-Split nach Reitern

Betrifft: Formel-Split nach Reitern von: Steffen
Geschrieben am: 08.09.2014 17:18:37

Hallo liebe Excler,

gibt es eine Möglichkeit mit einfachem (für jemanden, der sich seit 1 Woche VBA reinzieht) VBA aus einer Zelle mit dem Inhalt

"='1Sheet!'B4+Sheet!B500*'3Sheet!'C12"

nur die Reiter mit der Adresse seperat auszugeben.

Habe mich schon mit Split und dank Frank auch mit InStr Operatoren versucht dem Problem anzunähern, komme aber nicht weiter.

Dabei muss das ganze dynamisch gestaltbar sein, für den Falls das weitere Werte mit anderen Rechenzeichen verwendet werden.

Falls jemand eine Lösung findet, soll dieser reich belohnt werden!
Schonmal Danke im voraus.

  

Betrifft: Ein Fall für SplitVx aus dem Archiv, ... von: Luc:-?
Geschrieben am: 08.09.2014 18:51:26

…Steffen!
Bei eigener Suche keine reiche Belohnung erforderlich! ;-]
Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: Ein Fall für SplitVx aus dem Archiv, ... von: Steffen
Geschrieben am: 09.09.2014 09:57:08

Das ist wahrscheinlich eine super Lösung.

Aber nicht für das von mir beschriebene Problem.

Wie du selbst sagtest am 02. März 2013:
"Wie man leicht erkennen kann, geht es bei SplitVx um Trennung des Suchbegriffs auch
an mehreren unterschiedlichen Stellen, was keine StandardFkt (auch keine von VBA!) leistet."
Und das war eins der Kriterien.
Aber jetzt weiß ich immerhin, dass das Problem nicht lösbar ist mit einfachem VBA.
Vielen Dank!

Nebenbei lasse ich mir ungern vorwerfen, dass "eigene Recherche" das Problem lösen kann, wenn ich seit ca. 1 Woche durchgehend an VBA zumbastle and allen möglichen Ecken und Kanten ohne Vorkenntnisse --> Denkst du das ginge ohne "eigene Recherche"?


  

Betrifft: AW: Ein Fall für SplitVx aus dem Archiv, ... von: Daniel
Geschrieben am: 09.09.2014 11:18:30

Hi
es geht prinizipell schon mit "einfachem" VBA, aber nur unter bestimmten Voraussetzungen:

Sub test()
Dim Formel As String
Const Trennzeichen As String = "()+-*/&^"
Dim i As Long
Dim TeilTexte() As String
Dim Ergebnis As String

Formel = Range("a1").Formula
For i = 1 To Len(Trennzeichen)
    Formel = Replace(Formel, Mid$(Trennzeichen, i, 1), ",")
Next
TeilTexte = Split(Formel, ",")

For i = 0 To UBound(TeilTexte)
    If InStr(TeilTexte(i), "!") > 0 Then
        If InStr(Ergebnis, TeilTexte(i)) = 0 Then Ergebnis = Ergebnis & vbLf & TeilTexte(i)
    End If
Next

If Ergebnis <> "" Then MsgBox "Verwendete Zellbezüge:" & Ergebnis
End Sub
damit es funktioniert, dürfen die Tabllenblattnamen kein Zeichen enthalten, welches zu den Trennzeichen gehört und auch kein Komma.
Sollte dies vorkommen, würde der Code deutlich komplizierter werden, wenn es nicht vorkommt, gehts relativ einfach wie gezeigt.

gruß Daniel


  

Betrifft: AW: Ein Fall für SplitVx aus dem Archiv, ... von: Steffen
Geschrieben am: 09.09.2014 12:14:39

Hallo Daniel,
hauptsache ich kam gerade auf eine ähnliche Ideem mit der ich die komplette formel mit Substitute für +-*/^ in " " umbastle und danach nach den " " splite.

Und kaum ein paar Minuten später - hab ich den VBA dazu im Forum!

Klasse!

Bastle das jetzt ins Hauptmakro ein und gebe die Resultate sofort im Forum bekannt.


  

Betrifft: Das war kein Vorwurf, ... von: Luc:-?
Geschrieben am: 09.09.2014 14:02:50

…Steffen,
sondern bezog sich nur auf die Suche nach SplitVx, was du ja vorher gar nicht kanntest, verbunden mit einem Aufgreifen deines Kursiven… ;-|
Im Übrigen hast du das von dir Zitierte wohl falsch verstanden, denn Trennen von FmlTexten auf dem Operator wäre ein ganz besonders trivialer Anwendungsfall. Unterschiedliche Operatoren sind hier nämlich auch unterschiedliche Trennstellen. Du hättest dir doch mal die BspMappe für Oberschlumpf ansehen sollen! :-[
Gruß, Luc :-?


  

Betrifft: Und so geht's mit ZellFmln ... von: Luc:-?
Geschrieben am: 09.09.2014 14:50:56

 ABCD
11000'1Sheet'!B4Sheet!B500'3Sheet'!C12
2ZellFormeln:
3B1:D1: {=SplitVx(ZFml;{"="."+"."*"})}
4ZFml:=ZELLE.ZUORDNEN(6;A1)

Und das ist universell, für viele Zwecke, in ZellFmln und in VBA-Prozeduren, einsetzbar!
Anmerkung: Die 2.Fml ist keine Zell-, sondern eine benannte Fml, die eine XLM-Fkt verwendet, weshalb die Datei als .xlsm/b gespeichert wdn muss (nicht wg SplitVx)!
Luc :-?


  

Betrifft: Ergänzung der KlammerBemerkung im letzten ... von: Luc:-?
Geschrieben am: 10.09.2014 04:28:52

…Satz:
(nicht wg SplitVx, falls diese UDF nicht in der Mappe, sondern einem aktiven AddIn steht)
Luc :-?