Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
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
Formel in For - Next Schleife implementieren
Sascha
Hallo Experten.
Wiedereinmal eine Frage, Sorry, aber ich kriegs nicht hin...
Ich habe in einer Userform 18 Textboxen (TBN29 - TBN46) mit Eingabemöglichkeit
Zusätzlich habe ich nochmals 18 Textboxen (TBF29 - TBF46) in der die Formel der jeweiligen Zellen erhalten sind.
Dieser Code benutze ich, um in jeder einzelnen Textbox (TBF`s) die die Formel enthält, die Formel aufzulösen und um danach in der jeweiligen anderen Textbox (TBN`s) , den Wert in das jeweilige Blatt und die jeweilige Zelle zu schreiben.
Kompliziert aber Ihr sieht es im Code...
Nun versuche ich verzweifelt diesen Code in eine For - Next Schleife zu implementieren, damit ich nur mit einem Button alle Werte einfügen kann...
Dies der Source-Code:

Private Sub CBTB46OK_Click()
Dim arr, strWks As String, strRange As String
arr = Split(Replace(TBF46, "=", ""), "!")
strWks = Replace(arr(0), "'", "")
strRange = arr(1)
Sheets(strWks).Range(strRange) = TBN46.Text
End Sub
Mit diesem Code muss ich aber bei jeder Textbox (TBN...) einen Button haben, der mir den eingegebenen Wert in der TBN ins Richtige Blatt ans Richtige Ort schreibt...
So hab ich probieren wollen...:
 Dim arr, strWks As String, strRange As String, n As Integer
For n = 29 To 46
arr = Split(Replace(("TBF" & n), "=", ""), "!")
strWks = Replace(arr(0), "'", "")
strRange = arr(1)
Sheets(strWks).Range(strRange) = ("TBN" & n).Text
Next n
Ich bekomme so immer einen Syntaxfehler...
Oder ist das gar nicht möglich?
Gruss Sascha
Das lässt d.VBA-Syntax wirkl nicht zu, ...
24.01.2012 22:02:33
Luc:-?
…Sascha,
denn bei TBN scheint es sich ja um einen internen Namen zu handeln. Der ist ein Objekt, während du ihn über einen String repräsentieren willst. Entweder musst du ein Array aus allen Internnamen entsprechend indizieren oder die Externnamen (Caption) benutzen. Alternativ wäre auch die Index- bzw Tag-Eigenschaft mögl, falls diese entsprechend gesetzt wurden.
Gruß Luc :-?
AW: Das lässt d.VBA-Syntax wirkl nicht zu, ...
25.01.2012 08:41:57
Sascha
Guten Morgen Luc,
Ok, hab gerade gesehen, dass es bei den Textboxen keine (Caption)-Möglichkeit gibt.
Wie muss es denn aussehen wenn ich Tag`s vergebe?
Ich würde somit mal bei jeder betroffenen Textbox (29-46) die jeweilige Zahl bei Tag eingeben
Also bei Textbox29 als Tag die Nummer 29 usw...
Würde es dann vielleicht funktionieren?
Gruss Sascha
Anzeige
Ja, wenn du die zyklisch abfragst! Gruß owT
25.01.2012 10:07:06
Luc:-?
:-?
AW: Ja, wenn du die zyklisch abfragst! Gruß owT
25.01.2012 10:23:11
Sascha
Hallo Luc,
Gut zu wissen dass es möglich wäre...
Ich habe nach zyklischer Abfrage in Google gesucht, da ich leider nicht weis was dies genau bedeuten soll.
Ich kenne mich in VBA nur ganz schlecht aus.
Aber bei den Ergebnissen kam meist immer ein Klassenmodul heraus.
Dann kann ich diese Idee vergessen und abhaken. Sicherlich viel zu kompliziert für mich.
Braucht es denn ein Klassenmodul?
Gruss Sascha
Nein! 1 PgmZyklus ist 1 Schleife! Hast du doch!
25.01.2012 13:04:28
Luc:-?
Gruß Luc :-?
AW: Nein! 1 PgmZyklus ist 1 Schleife! Hast du doch!
25.01.2012 13:47:37
Sascha
Ja habe eine schleife...
Ich habe jetzt bei allen betroffenen textboxen den tag ergänzt...
aber wie kann ich im Code, resp. in der Schleife sagen es soll den Tag Namen nehmen?
meine Tags heissen nun TBF29 - TBF46 und TBN29 - TBN46
An sich ändert sich im Code ja nur noch dass es den Tag-Namen nehmen soll, oder liege ich immernoch komplett falsch?
Private Sub CommandButton1_Click()
Dim arr, strWks As String, strRange As String, n As Integer
For n = 29 To 46
arr = Split(Replace(("TBF" & n), "=", ""), "!")
strWks = Replace(arr(0), "'", "")
strRange = arr(1)
Sheets(strWks).Range(strRange) = ("TBN" & n)
Next n
End Sub
LG Sascha
Anzeige
Ja, liegst du! Kein Tag-Name, sondern ...
25.01.2012 15:46:09
Luc:-?
Tag-Inhalt, Sascha!
Schleife über alle vorhandenen Textboxen laufen lassen und den Tag-Inhalt abfragen, also eher so:
For Each tb In Sheets(strWks).TextBoxes
If CInt(tb.Tag) > 28 And Cint(tb.Tag) < 47 Then
Sheets(strWks).Range(strRange) = tb.Text
End If
Next tb
Gruß Luc :-?
AW: Ja, liegst du! Kein Tag-Name, sondern ...
25.01.2012 16:35:22
Sascha
Hallo Luc,
ich habe Deinen Code mal so interpretiert:
Dim arr, strWks As String, strRange As String, s As Control, n As Integer, tb As Control
For Each tb In Sheets(strWks).TextBoxes
If CInt(tb.Tag) > 28 And CInt(tb.Tag) 
Irgendwas mache ich Falsch... Bekomme den Fehler:
Index ausserhalb des gültigen Bereichs
Sascha
Anzeige
AW: Ja, liegst du! Kein Tag-Name, sondern ...
26.01.2012 17:04:57
Sascha
Hallo Luc,
Ich versuche noch immer Deinen Code anzupassen...
Kannst Du oder willst Du mir noch ein wenig helfen?
Hier nochmals der Code: Bekomme immer "Index ausserhalb des gültigen Bereichs"
Private Sub erhalten_von_einfügen()
Dim arr, strWks As String, strRange As String, s As Control, n As Integer, tb As Control
For Each tb In Sheets(strWks).TextBoxes
If CInt(tb.Tag) > 28 And CInt(tb.Tag) 

Liebe Grüsse
Sascha
Das ist kein Anpassen, sondern eher ...
26.01.2012 17:50:09
Luc:-?
…entstellen, Sascha! :-|
Nachdem ich deine vorherigen Versuche analysiert habe, glaube ich, dass du die Grundproblematik nicht wirkl verstanden hast. Ich muss mir wohl erst noch mal die Gesamtaufgabe ansehen, um dir wirksam helfen zu können. Hoffe nur, dass die im 1.Beitrag deutlich genug erklärt war.
Bis später! Luc :-?
Anzeige
Also grundsätzlich könnte es auch so ...
27.01.2012 21:48:29
Luc:-?
…fktionieren wie du es ursprgl vor hattest, Sascha,
aber nur unter Einsatz der vbFkt CallByName und das auch nicht in einem Ritt, sondern mit vorherigem Objekt-Setzen, bspw so…
Private Sub CBTB46OK_Click()
Dim arr, strWks As String, strRange As String, ctb As Control
For n = 29 To 46
Set ctb = CallByName(Me, "TBF" & n, vbGet)
arr = Split(Replace(ctb.Text, "=", ""), "!")
strWks = Replace(arr(0), "'", "")
strRange = arr(1)
Set ctb = CallByName(Me, "TBN" & n, vbGet)
Sheets(strWks).Range(strRange) = ctb.Text
Next n
End Sub
Was die andere Variante betrifft, hatte ich einen Fehler begangen, indem ich nicht von einer UserForm, sondern normalen Textfeldern ausgegangen bin. Auf einer UF musst du natürlich alle Controls durchlaufen, ggf deren Typ abfragen, um auszuschließen, dass nach einer bei diesem Control nicht vorhandenen Eigenschaft gefragt wird. Dazu eignet sich gut der .Tag, dem man auch für alle relevanten Textboxen denselben Wert geben kann. Die flfd Nr kannst du auch aus dem .Index holen → dazu sollten die Indizes der relevanten Textboxen aber ebenfalls flfd lückenlos sein. Allerdings wdn alle Controls flfd indiziert (in Frames jeweils extra), du hättest dann wahrscheinl einen anderen Zahlenbereich. Aber es muss ja wohl nicht unbedingt 29 bis 46 sein.
Gruß + schöWE, Luc :-?
Anzeige
AW: Also grundsätzlich könnte es auch so ...
28.01.2012 17:49:43
Sascha
Hallo Luc,
Super Code... Vielen Dank. Klappt hervorragend...
Ich wusste nicht dass man dazu auch den Tag einsetzen kann. Das kannte ich vorher überhaupt nicht.
Coole Sache....
Das Gute daran ist, dass der Zahlenbereich nun unabhängig vom Textbox-Namen sein kann. So bin ich nun viel flexibler als vorher...
Prima Sache. Nochmals vielen herzlichen Dank
Und einen schönen Sonntag
Sascha
Danke, gleichfalls! Viel Erfolg! Gruß owT
28.01.2012 18:04:12
Luc:-?
:-?
Biste mit der Umsorgung durch Luc nicht zufrieden?
25.01.2012 16:01:00
Reinhard
Hallo Sascha,
dann sage Luc das.
Das ist etwas anderes als um 15:43 deine Ausgangsfrage von hier in einem anderen Forum auch zu stellen :-(
Gruß
Reinhard
AW: Biste mit der Umsorgung durch Luc nicht zufrieden?
25.01.2012 16:18:42
Sascha
Hallo Reinhard,
Schön dass Du so aufmerksam bist. Danke dafür.
Ich bin mit der Umsorgung mit Luc SEHR zufrieden, schliesslich ist er ja scheinbar auch einer der einzigen der mir wirklich helfen will und kann.
An diese Stelle ein riesengrosses Dankeschön an Luc!
Da ich aber mit diesem Code echte Probleme habe ihn zu verstehen, und da ich keinem einzelnen zu sehr auf den Nerven rumtrampeln möchte, habe ich gedacht, ich Poste das ganze auch noch in einem anderen Forum!
Das Ziel ist, ohne tausendmal nachzufragen, trotzdem zum was zu erreichen.
Vielleicht hat ja auch ein anderer Experte eine andere Lösung mit der ich arbeiten kann.
Ich möchte ja daraus auch etwas lernen um persönlich auch weiterzukommen.
Mehrere Lösungen wären dabei Hilfreich.
In meiner ganzen VBA Zeit habe ich gelernt, dass viele Wege nach Rom führen.
Auch Du hast einen extrem grossen Einfluss auf mich ausgeübt gehabt!
Ich danke auch Dir dafür.
Falls Du nicht der gleichen Meinung bist wie ich, z.b. dass man an mehreren Orten, bei mehreren Leuten nachfragen kann, darf, sollte, dann lass es mich wissen, und ich Lösche meinen Thread aus dem anderen Forum!!!
Was mich persönlich etwas mehr Beschäftigt, ist die Tatsache dass Du Reinhard, (und ich weis genau dass Du auch einen Lösungsvorschlag hättest), dich mehr darum bemühst, was andere wann und wo was posten, anstatt vielleicht Dein Wissen zusätzlich weiterzugeben.
Vielleicht liegt es ja an mir oder an dem was mal war, ich weis es nicht. Trotzdem....
In diesem Sinne wünsche ich Dir noch einen schönen Abend, und nochmals SORRY wenn ich mich nicht genau so verhalte wie Du es gerne möchtest.
Liebe Grüsse
Sascha
Anzeige
AW: Biste mit der Umsorgung durch Luc nicht zufrieden?
25.01.2012 19:50:14
Reinhard
Hallo Sascha,
""""Ich bin mit der Umsorgung mit Luc SEHR zufrieden, schliesslich ist er ja scheinbar auch einer der
einzigen der mir wirklich helfen will und kann.""""
? du stellst hier eine Frage, Luc beginnt dir zu helfen, es entwickelt sich daraus eine Beitragsfolge.
Daraus folgerst du daß dir hier kein andrer helfen will und/oder kann? *staun*
Warum zum Henker sollte sich ein anderer ebenfalls hilfsbereiter und fachkundiger miteinmischen/einbringen wenn Luc schon die nötigen Lösungshinweise gibt?
Probiere doch erstmal die aus.
Da ich aber mit diesem Code echte Probleme habe ihn zu verstehen, und da ich keinem einzelnen zu sehr auf den Nerven rumtrampeln möchte, habe ich gedacht, ich Poste das ganze auch noch in einem anderen Forum!
Du trampelst weltweit keinem Helfer auf den Nerven rum wenn du eine möglichst klare Frage stellst,
Rückfragen klar beantwortest und dann die Lösungsvorschläge umsetzt und über das Ergebnis berichtest.
Nervend sind z.B. Nichteinhaltung dieser Dinge denn irgendwann hat keiner mehr Bock dir die zur Lösung wichtigen Dinge einzeln nacheinander durch eine oder gar mehrere Rückfragen pro Wurm wie Würmer aus der Nase zu ziehen.
Auch unbeliebt wenn permanent die Augangsanfrage um neue zusätzlihe Features ergänzt wird.
Da istaber nur das "permanent" sehr nervabtötend. Keiner hat was dagegen daß wenn die Ausgangsfrage zu deiner Zufriedenheit gelöst wurde du aufgrund der neuen Entwicklung quasi
dann noch EINEN Zusatzwunsch hast.
""""Vielleicht hat ja auch ein anderer Experte eine andere Lösung mit der ich arbeiten kann.
Ich möchte ja daraus auch etwas lernen um persönlich auch weiterzukommen.
Mehrere Lösungen wären dabei Hilfreich.""""
Das ist nicht Sinn eines Forums wo du kostenlos Lösungen bekommst.
Zahle Luc, wenn er Lust und Zeit hat, seinen üblichen Lohn von 1000€ pro tag, Spesen extra, dann fliegt er in die Schweiz, setzt sich neben dich an den Rechner und zeigt er dir alle Wege nach Rom die ihm einfallen.
In einem kostenlosen Excelforum kriegste den Vba-Weg nach Rom gezeigt, ggfs. noch den Formel-Weg nach Rom.
Oder den For-Next-Weg und den Do-While-Weg nach Rom und Fin.
Falls Du nicht der gleichen Meinung bist wie ich, z.b. dass man an mehreren Orten, bei mehreren Leuten nachfragen kann, darf, sollte, dann lass es mich wissen, und ich Lösche meinen Thread aus dem anderen Forum!!!
Ich mag kein Crossposting. Gründe sind jedem klar wenn er in Suchmaschinen nach dem Begriff suchen läßt. Aber ich bin nicht der Nabel der Welt.
In deinem Fall ist es jetzt so gelaufen, Luc hat Zeit und Mühe aufgewendet dir zu helfen.
Rainer im anderen Forum ebenfalls. Und dort hat dir Rainer inzwischen eine Lösung genannt wo du dich
mit "Funktioniert einwandfrei" usw. dafür bedankt hast.
NUR weiß davon Luc? Ohne meinen Hinweis auf CP würde er vielleicht/anzunehmenderweis
weitere Energie dafür einsetzen :-(
Der Verlauf der beiden Beitragsfolgen war jetzt Zufall. Hätte ja auch sein können daß hier jetzt Luc DIE Lösung gezeigt hätte und Rainer in Unkenntnis dessen seinerseits weiterhin seine Energie in den Papierkorb vernichtet.
Du kannst natürlich machen was du willst, alles dein Ding.
Aber ich für mich mag kein CP.
Wenn ich zu Lernzwecken und diesen Grund verstehe ich vollkommen, ein Vba-Problem habe
so wähle ich den saubereren Weg. Ich stelle die Frage in einem Forum.
Kommt ggfs. eine Lösung so bedanke ich mich dafür und frage dann DORT nach ob es noch andere
Lösungswege gibt und erläutere daß ich das aus lernzwecken für mich wissen möchte.
Dann wissen die potentiellen Helfer Bescheid.
Kommt dann so ca. vier Tage (bei WE eher 5-6) dort nix mehr so bin ich frei, denn dann ist es kein CP mehr in EINEM anderen Forum meine Frage erneut zu stellen. ABER mit Angabe der erhaltenen Lösung und MIT Angabe des Links zu der alten Beitragsfolge.
Dann wissen im "neuen" Forum die potentiellen Helfer Bescheid.
""""Was mich persönlich etwas mehr Beschäftigt, ist die Tatsache dass Du Reinhard, (und ich weis genau
dass Du auch einen Lösungsvorschlag hättest), dich mehr darum bemühst, was andere wann und wo was
posten, anstatt vielleicht Dein Wissen zusätzlich weiterzugeben""""
K.A. ob und welchen Lösungsvorschlag ich hätte, hab mich mit der Anfrage an sich noch gar nicht befasst.
Ich lese hier bei Herber fleissig mit, auch aus lernzwecken, und ich kann mir Namen u.ä. nahezu nicht merken, aber Problemstellungen in Excel merke ich mir, naja so ein zwei Tage.
Deshalb habe ich dein CP im anderen Forum nicht an deinem Namen erkannt sondern an der Aufgabenstellung.
Aktuelle sind im anderen Forum was winzig ist, da sind ca. 25 Anfragen/Beitragsfolgen seit dem 4.1 sichtbar.
D.h. ich lese da leicht alle 0-3 Neuanfragen pro Tag mit.
Somit konnte ich gar nicht anders als deine Anfrage zu lesen. Dann kam spontan die ERinnerung "ups, hab ich schon bei Herber gelesen"....
In diesen ca. 25 Beitragsflogen bin ich mit 53 Beiträgen dabei.
Deine Tatsache, Unterstellung oder was immer das für ein Mist ist, ist dermaßen krud *kopfschüttel*
""""Vielleicht liegt es ja an mir oder an dem was mal war, ich weis es nicht."""
"was mal war" klingt so theatralisch für Fremde. Da war doch nix. Es begann mit einer Anfrage von dir zu einer Mappe. Ich löste das, dann kamen Zusatznachfragen und Zusatznachfragen und ich investierte schon viel Energie darein um das zu lösen bis ich halt mal sagte, wird mir zuviel für kostenlos.
Du konntest bei deinem Chef nicht durchsetzen daß ich Geld für meinen Arbeitseinsatz erhalte.
Warum sollte ich dir deshalb gram sein?
Dann hast du mir 100€ aus deinem Privatgeld überwiesen.
Für mich sehr viel Geld und es hat mich gefreut.
Gut, du schriebst von Weihnachten nochmal was, okay kam nix. Sehr schade.
Aber ich habe schon reichlich viel im Leben erlebt insofern ein unwichtiges Peanut.
Sowas hat absolut keinen Einfluß auf mein Antwortverhalten asl Helfer dir gegenüber.
Also reim dir da bitte nix zusammen. Ich habe mich hier einzig eingemischt wegen CP.
Das hätte ich bei jedem anderen Nicknamen auch gemacht.
Und grundsätzlich, meine Hinweise auf CP oder die von anderen, sind keineswegs dafür gedacht den jeweiligen Anfrager "fertigzumachen".
Nein, sie sind als eine Art Schutz der hiilfsbereiten Menschen gedacht die helfend eingreifen.
Es bleibt ja trotz des CP-Hinweises jedwedem völlig unbenommen dem Anfrager zu helfen.
Gruß
Reinhard
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige