Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Text aus Zelle als Bedingung in Prozedur

Text aus Zelle als Bedingung in Prozedur
14.05.2008 14:48:26
Peter
Hallo zusammen,
ich habe in mehreren Zellen Text stehen, der wie folgt aussieht:
z.B. C12= "If YS24>=1 and YS24 Wie kann ich diesen Text direkt als bedingung in meine Prozedur in vba einbinden?
Folgender Hintergrund:
Von diesen Regel gibt es ca. 300 Stück. Diese können durch den Benutzer auf dem entsprechendem Arbeitsblatt selbst definiert werden. Der Text in C12 (s.o.) kann also variieren. Ich kann daher nicht direkt in der Prozedur schreiben: If YS24>=1 and YS24 Danke schonmal,
Peter

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text aus Zelle als Bedingung in Prozedur
14.05.2008 15:31:00
Renee
Hi Peter,
Da bleiben ziemliche viele Fragen offen:
  • Von diesen Regel gibt es ca. 300 Stück. Nur genau von dieser mit nur Variablen oder auch andere wie zum Beispiel "If XY =3 or ABC = 4 then Name2 = 94 else ZZ/4.5" ... ?

  • ReYS24 Was bedeutet dieser String oder überhaupt die Variablen ? Zellereferenzen, benannte Bereiche ?

  • Wieso ist die Syntax selbstgebastelt? Könnte nicht die Formelsyntax von EXCEL zum Zuge kommen? Also z.B. IF(AND(YS24>=1;YS24
    GreetZ Renée

  • AW: Text aus Zelle als Bedingung in Prozedur
    14.05.2008 16:19:00
    Peter
    Hallo Renée,
    a) Es gibt auch andere:
    a.a) Arbeitsblatt(YS).Bereich("C12")= "If YS24>=1 and YS24<10 then ReYS24=1"
    a.b) Arbeitsblatt(YS).Bereich("C14")= "If YS26>0 then ReYS26=0"
    a.c) Arbeitsblatt(MT).Bereich("C2")= "If MT5>20 and MT5<100 and ReYS26=0 then ReMT5=1"
    Else war bis jetzt nicht nötig.
    b)
    YS01-YS99, MT01-MT99, etc. = Namen+Zähler (hinter jedem einzelnen Namen+Zähler sind mehrere tausend Werte hinterlegt, die anhand der generierten Regeln überprüft werden sollen)
    ReYS01-ReYS99, ReMT01-ReMT99, etc. = Ergebnis der Regel des entsprechenden Namen+Zählers.
    c)
    Die Regel (Formel) wird aus mehreren Zellen "verkettet" und in einer Zelle ausgegeben.
    Über Gültigkeit kann der Benutzer Symbole (>,,>=, Mit den Formel sollen Daten überprüft werden, je nachdem ob eine Regel aktiv(=1) oder inaktiv(=0) ist.
    Diese Formel würden in eine schon vorhandene FOR Schleife eigebunden und sollten zu entsprechenden Ergebnissen führen.
    Gruß Peter

    Anzeige
    AW: Text aus Zelle als Bedingung in Prozedur
    14.05.2008 16:48:42
    Renee
    Hi Peter,
    Sorry ich steig da nicht durch. ...hinter jedem einzelnen Namen+Zähler sind mehrere tausend Werte hinterlegt, Sind diese Werte in Zellen abgelegt? Was bedeuten für dich Namen und was Zähler?
    ...hab ich alles verkettet und als vba Formel gespeichert. VBA ist eine Programmiersprache, das sind keine Formeln, sonder wären ev. Befehlszellen. Nur wären dann auch all deine (tausend) Namen+Zähler verschieden Variablen und hätten nix mit Zellreferenzen zu tun. Du kannst aber einen VBA-Befehl nich so einfach "embedded" ausführen. Darum hab ich nach einer Formel-Syntax gefragt, den die liesse sich mit dem EVALUATE-Befehl 'evaluieren', bzw. ausführen. Wenn du aber bei deinem VBA-Level Code durch Code erstellen und anschliessend noch ausführen willst, dann rate ich dir dringend davon ab.
    Ich glaube du hast da konzeptionell etwas im Kopf und dich bereits soweit in eine Lösung reingesteigert, die zum Scheitern verurteilt ist.
    Sorry und GreetZ Renée

    Anzeige
    AW: Text aus Zelle als Bedingung in Prozedur
    14.05.2008 17:38:42
    Peter
    Huhu,
    
    Du kannst aber einen VBA-Befehl nich so einfach "embedded" ausführen. 
    


    Heißt das, dass es geht? wenn ja wie?
    Kann ich das irgendwie auf diese Art einbinden?

    
    Dim Re1 as string
    Re1=">=1"
    For i=1 to 5
    If Workbooks(A).Worksheets(1).Cells(2+i) & Re1 Then
    End if
    Next i
    


    Gruß P

    Embedded = eingebettet
    14.05.2008 19:52:00
    Renee
    Hi Peter,
    Nein das funktioniert so eben nicht. Embedded heisst einen Befehl zur Laufzeit erzeugen und anschliessend ausführen. EVALUATE ist sowas was änliches, d.h. du kannst per VBA eine Formel erstellen uns sie nachher durch den Formel-Interpreter auswerten lassen, aber für VBA-Befehle gibt es diese Möglichkeit nicht. In VBA könntest du höchstens eine ganze Prozedur per VBA in die VBEProject Objektstruktur einfügen und dann ausführen. Dazu findeste du Beispiele im Archiv und der Recherche.
    GreetZ Renée

    Anzeige
    Danke.
    14.05.2008 21:24:09
    Peter
    danke

    Renée hat im Prinzip recht,...
    15.05.2008 03:55:19
    Luc:-?
    ...Peter,
    aber es gibt natürlich einen Trick so etwas hinzubekommen. Allerdings hat Renée auch ein 2.Mal (mehr als) recht, wenn sie meint, dass das nichts für dein angegebenes VBA-Level ist.
    Falls du dich aber perspektivisch weiter mit diesem Thema befassen möchtest, nenne ich dir mal einige Voraussetzungen...
    1. Du musst dich entscheiden, ob deine Pseudocodes der xlFormel- oder der VBA-Syntax folgen sollen, wenn du sie As They Are in eine Prozedur "einbetten" willst. Ansonsten, also bei eigener Syntax, steht Nacharbeit an (kann ggf automatisiert wdn).
    2. Du benötigst bei xlFormel-Syntax nur eine Prozedur, die die Codes liest und mit der vbFkt Evaluate auswertet. Du benötigst aber mindestens 2 Prozeduren bei anderer Syntax:
    a) eine Code-Lese/Schreib-(Haupt-)Prozedur, um die Codes zu lesen und in...
    b) ...eine Dummy-Prozedur als Textbefehlszeile einzutragen. Das muss natürlich gültiger vbCode sein!
    c) Bei eigener Syntax ist evtl eine separate Prozedur zum Übersetzen deiner Syntax in xlFormel- bzw vbSyntax angeraten (im ersteren Fall gilt dann das oben zuerst Gesagte).
    3. Die Hauptprozedur muss die Dummy-Prozedur ansprechen. Sie kann b.Bed auch alle gleichbleibenden Befehlszeilen des Dummys einmalig erzeugen und den variablen Teil in einem zyklischen Prozess einfügen, bevor sie ihn dann mit Run aufruft. Dabei können auch evtl benötigte Parameter übergeben wdn.
    4. Wenn das nicht auf Knopfdruck, sondern per Formel ablaufen soll, muss eine sog udFkt (selbstgeschriebene Funktionsprozedur) die Übergabe deiner Codes an eine Globalvariable besorgen. Die wird dann durch die o.g. Hauptprozedur ausgewertet, nachdem sie durch eine Ereignisprozedur, die auf ein Ereignis reagiert, welches durch deine udFkt ausgelöst wurde, aufgerufen wurde. Hierzu rate ich aber in diesem speziellen Massendatenverarbeitungsfall eher nicht.
    Fazit: Du siehst an dieser Beschreibung sicher, dass das doch etwas mehr als nur Grundkenntnisse voraussetzt... ;-)
    Aber die Idee finde ich nicht schlecht [warum auch, habe ja selber Ähnliches probiert... ;-)]! So etwas liest man hier nur sehr selten. Allerdings gilt es doch noch einmal zu überlegen, ob das wirklich der rationellste Weg ist! Immerhin müssen ja dann auch die Mitarbeiter mit dieser Syntax klar kommen. Aber vielleicht ist das ja gar kein Problem und allen diese Syntax aus uns natürlich unbekannten Gründen vertraut... ;-)
    Gruß Luc :-?
    Anzeige

    308 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige