Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
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
Freies Textfeld in Formel einbeziehen
24.04.2020 17:40:34
Jan
Schön guten Tag,
dies ist meiner erster eigener Post in diesem Forum, ich habe schon vieles nur durch das durchstöbern des Forums bezüglich Formeln und VBA in Excel gelernt, nun stehe ich vor einer Herausforderung, bei der ich nicht weiß ob diese überhaupt zu meistern und ob mein Vorhaben überhaupt umsetzbar ist. Leider habe ich in diesem Forum auch nichts weiter dazu gefunden.
Ich hoffe ihr könnt mir bei diesem Problem helfen oder mich zumindest dies bezüglich aufklären!:)
Vorab die Frage: Ist es möglich in eine Zelle eine Formel zu schreiben, welche sich auf ein freies eingefügtes Textfeld (nicht Text in einer Zelle) bezieht?
Wenn ja -> Kann man die Formel so gestalten:
Die Formel steht in Zelle B13 im ersten Tabellenblatt und soll die Anzahl mehrerer bestimmter Textfelder anzeigen. (Der Grund für bestimmte Textfelder: Nur die Anzahl der Textfelder anzeigen, die als Inhalt/Text im Textfeld am Ende nach einem Kennzeichen ein bestimmtes Wort enthalten)
Beispiel:
In Tabelle 1: Zelle B13 = "erfragte Formel" (zeigt eine Zahl, bsplw. 2)
In Tabelle 2: Textfeld 1 = KI-JM 24415 Caddy, Textfeld 2 = KI-JM 55415 Caddy (Die Textfelder befinden sich immer im Bereich A1:Q51, sollen anhand des Wortes "Caddy" gezählt werden und müssen bewegbar bleiben, da jederzeit die Möglichkeit bestehen soll sie verschieben zu können)
Wenn nein -> gibt es evlt. eine Möglichkeit dies in VBA zu verwirklichen?
Ziel soll es sein in Tabelle 1 eine Auflistung zu haben, die die Anzahl verschiedener Kfz. aufzeigt.
Klar könnte man die Kfz mit Kennzeichen in Tabelle 2 in die jeweiligen Zellen schreiben und in Tabelle 1 einfach "ZählenWenn" verwenden, jedoch muss es durch die Textfelder wie schon gesagt möglich sein die Autos zu verschieben ohne copy und paste nutzen zu müssen.
Ich hoffe sehr, dass ihr mir helfen könnt und ich mein Anliegen verständlich geäußert habe. ich bin ein wenig am verzweifeln...
Vielen Dank und einen schönen Tag noch! :)
Gruß
Jan

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Freies Textfeld in Formel einbeziehen
24.04.2020 17:53:44
ChrisL
Hi Jan
Nur mal ein Tipp. Du kannst die Frage bei Bedarf wieder als offen markieren (und vielleicht noch eine Beispieldatei hochladen, sowie das gewünschte "Formel" Resultat näher beschreiben).
Man kann Textfelder mit Zellen verknüpfen.
Formular-Textfelder = rechte Maustaste
Active-X Textfeld = LinkedCell Eigenschaft
Die Zellen bei Bedarf ausblenden.
Anschliessend normale Formeln, auf die verknüpften Zellen verwenden.
cu
Chris
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 16:56:49
Jan
Hallo Leute,
vielen Dank für eure Antworten!
Ihr habt mir auf jeden Fall auf weitere Ideen gebracht mein Problem zu lösen.
Ich habe nun ein Makro gefunden und angewendet, welches alle Textfelder von jedem Tabellenblatt ausliest, danach ein neues Tabellenblatt erstellt (sofern noch nicht vorhanden) und dort als Tabelle alle Textfelderinhalte aufgestückelt für jedes Tabellenblatt aufzeigt.
Mit diesen Informationen kann ich nun die Formel ZählenWenn anwenden um im ersten Haupttabellenblatt eine Aufzählung aller Informationen zu erstellen.
Das Makro poste ich nun einmal, vllt könntet ihr mir noch dabei helfen und mir sagen wie ich das Makro umändern müsste, damit das Makro nur aus bestimmten Bereichen der Tabellenblätter die Textfelder ausliest und nicht aus dem gesamten Tabellenblatt.
Die Bereiche welche ausgelesen werden sollen wären diese hier: A3:M45, N3:N29, P3:P51.
Hier einmal das Makro:
Sub Versuch()
Dim Sh As Shape, i As Long, j As Long, strDummy As String
Dim wsProtokoll As Worksheet, Ws As Worksheet
Const PROTOKOLLBLATT As String = "Protokoll"
On Error Resume Next
strDummy = Worksheets(PROTOKOLLBLATT).Name
If Err Then
Set wsProtokoll = Worksheets.Add(after:=Sheets(Sheets.Count))
wsProtokoll.Name = PROTOKOLLBLATT
Err.Clear
Else
Set wsProtokoll = Worksheets(PROTOKOLLBLATT)
End If
On Error GoTo 0
i = 1
For Each Ws In ThisWorkbook.Worksheets
j = j + 1
wsProtokoll.Cells(i, j) = Ws.Name
For Each Sh In Ws.Shapes
If Sh.Type = msoTextBox Then
i = i + 1
wsProtokoll.Cells(i, j) = Sh.TextFrame.Characters.Text
End If
Next Sh
i = 1
Next Ws
End Sub

Ich danke euch!!
Gruß
Jan
Anzeige
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 17:09:50
Daniel
Hi
Die Schleife muss schon über alle shapes laufen.
Aber du kannst so prüfen; ob das Shape mit seiner linken oberen Ecke in dem Zellbereich liegt:
if not intersect(Sh.topleftcell, WS.Range("A3:M45,N3:N29,P3:P51")) is nothing then.
Gruß Daniel
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 17:30:25
Jan
Hallo Daniel,
wow, danke für die schnelle Antwort!
Tut mir leid, nur wo müsste ich
if not intersect(Sh.topleftcell, WS.Range("A3:M45,N3:N29,P3:P51")) is nothing then.
einfügen?
Danke dir !
Gruß
Jan!
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 18:13:02
Daniel
Wenn du dir mal die Schritte überlegst, die dein Code ausführen muss, an welcher Stelle könnte es denn sinnvoll sein zu überprüfen, ob sich ein Textfeld innerhalb eine bestimmten Zellbereichs befindet oder nicht.
Gruß Daniel
Anzeige
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 18:21:00
Jan
Meiner Überlegung nach wäre das in diesem Bereich
For Each Ws In ThisWorkbook.Worksheets
j = j + 1
wsProtokoll.Cells(i, j) = Ws.Name
For Each Sh In Ws.Shapes
If Sh.Type = msoTextBox Then
i = i + 1
wsProtokoll.Cells(i, j) = Sh.TextFrame.Characters.Text
End If
Next Sh
i = 1
Next Ws
Bloß ich weiß nicht genau an welche Stelle dort.. Falls meine Überlegung überhaupt richtig ist .. :D
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 19:05:57
Daniel
Der Code macht ja noch mehr Prüfungen mit dem Shape.
Beispielsweise wird geprüft,ob das Shape eine Textbox ist.
Vielleicht otientierst du dich daran.
Gruß Daniel
Anzeige
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 19:27:40
Jan
Habe nun diesen Teil:
For Each Sh In Ws.Shapes
If Sh.Type = msoTextBox Then
i = i + 1
wsProtokoll.Cells(i, j) = Sh.TextFrame.Characters.Text
End If
so umgeändert:
For Each Sh In Ws.Shapes
If Not Intersect(Sh.TopLeftCell, Ws.Range("A3:M45,N3:N29,O3:Q51")) Is Nothing Then
i = i + 1
wsProtokoll.Cells(i, j) = Sh.TextFrame.Characters.Text
End If
Und es werden mir nurnoch die Textfelder in den definierten Bereichen angezeigt.
Also macht es genau das, was ich auch möchte.
Nur ich bin ehrlich, ich weiß nicht warum. :D
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 19:43:57
Daniel
Die schleife läuft über jedes Grafikelement auf dem jeweiligen Blatt.
Vorher hast du geprüft, ob das Grafikelement ein Textfeld ist, jetzt prüfst du, ob es in einem bestimmten Zellbereich liegt.
Anzeige
AW: Freies Textfeld in Formel einbeziehen
25.04.2020 20:13:00
Jan
Genau, das ist das was ich ja auch will bzw. mein Ziel ist:)
Dementsprechend vielen Dank für die Hilfe!
Alternative
24.04.2020 20:31:33
Luc:?
Man kann die Textfelder auch direkt ansprechen, Jan,
und ihren Inhalt anzeigen bzw durchsuchen. Das ist aber so nur per VBA, ggf einer sog UDFkt in einer ZellFml, möglich. Eine derartige UDF ist im HerberArchiv vorhanden, nur kann sie sich nur auf Objekte (hier: Textfelder) des gleichen Blattes beziehen. Es gäbe bei ihrer Anwendung 2 Möglichkeiten:
1. Wie bei verlinkten Zellen mit einer Fml pro Textfeld dessen Inhalt in eine Zelle zu übernehmen, worauf dann ZÄHLENWENN angewendet wdn kann;
2. In einer einzigen ZellFml alle TextfeldInhalte miteinander zu verbinden (falls es nicht zuviele sind) und in diesem Text dann das Auftreten des SuchBegriffs (SB) mit einer anderen UDF (CountOn) zu zählen oder dafür einen TextlängenVgl zu nutzen: (TextLänge mit SB minus TextLänge ohne SB)/SB-Länge
Auch hierbei muss die Ansprache der Textfelder auf demselben Blatt erfolgen, sonst wäre ggf alles auf dem Ergebnisblatt mit nur einer Fml pro SB zu erledigen gewesen (B12 enthält SB):
=CountOn(TextOf("Textfeld 1"; 1)&TextOf("Textfeld 2";1)&TextOf("Textfeld 3";1);B12)
So kann aber nur der CountOn-Teil in B13 des Ergebnisblattes stehen: =CountOn(Tabelle2!H6;B12)
Dann könnte natürlich auch auf alle Zellen, auf die die Texte übertragen wurden, ZÄHLENWENN angewendet wdn.
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Freies Textfeld in Formel einbeziehen
24.04.2020 20:39:38
Daniel
Hi
Excelformeln können zunächst mal nur auf Excelzellen zugreifen, nichts anderes.
per VBA könnt man natürlich auch Formeln schreiben, die irgendwelche Grafikobjekte verenden und auswerten, allerdings immer mit der Problematik, dass eine Änderung am Grafikobjekt keine neuberechnung der Formeln auslöst.
da verschieben für dich wichtig ist, spielt die Position der Textfelder eine Rolle?
kannst du mal ne Datei hochladen, um uns zu zeigen wie deine Textfelder aussehen und wie du dir das ganze vorstellst?
gruß Daniel

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige