Clever-Excel-Forum

Normale Version: Textfeld Inhalt ersetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Neu erstellte Textfelder (Textfeld 9 und Textfeld 10) wollen nicht übertragen werden.
[attachment=34013]

Im Tabellenblatt Zubereitung befinden sich mehrere Textfelder mit Inhalt. Diese Textfelder sind alle benannt (Textfeld 1, Textfeld 2, etc.).

Wenn ich in A13 im Tabellenblatt Pizza ein vorbestimmtes Wort per Dropdown auswähle, dann werden die Textfelder vom Tabellenblatt Zubereitung in das Tabellenblatt Pizza in die vorgegebenen Textfelder 1 und Textfeld 2 kopiert.

Mit Tony Gemignani und TXCraig1 funktioniert es.

Ich hab das Ganze nun erweitert, es funktioniert einfach nicht mit Textfeld 9 und Textfeld 10.
Hallo,
Case "Pizza Hut Pan Pizza"
  Simple 1, 5
  Simple 2, 6
Gruß Uwe
Das funktioniert leider nicht.

Es befinden sich sehr viele Textfelder im Tabellenblatt "Zubereitung".

Wenn ich ein neues Textfeld erstelle heißt es "Textfeld 32". Wenn ich es lösche und wieder ein neues Textfeld erstelle, dann heißt es bereits "Textfeld 33".

Wenn ich den Textfelder Namen gebe, dann bringt das auch nichts:
Beispiel:
  • Ich lösche "Textfeld 1"
  • Erstelle ein neues Textfeld (auto-generierter Name:"Textfeld 34")
  • Bennen "Textfeld 34" in "Textfeld 1" um.
  • Nichts geht mehr.
Hallo Bifi,

eine Anrede und ein Gruß erhöhen sicherlich die Bereitschaft auch anderer User, nach Lösungen zu suchen.
Anscheinend nummeriert Excel versteckt alle je erstellen Textfelder auf dem Tabellenblatt durch und vergibt feste Bezeichnungen "Textfeld 1", "Textfeld 2", etc. Selbst wenn man alle Textfelder löscht zählt Excel munter weiter.

Fazit: Der versteckte "innerliche" Dateiname eines Textfeldes kann nicht geändert werden, wenn die gleiche Bezeichnung "Textfeld" mit einer anderen Zahl verwendet wird (z.B. "Textfeld 21"). Es muss ein andere Name gewählt werden, dann funktioniert alles.
Hallöchen,

mit ...Item(x) wählst Du die Textbox in der Reihenfolge, wie Du sie in Deinem Shape.Range(array(...) festgelegt hast.

MsgBox ActiveSheet.Shapes.Range(Array("Textfeld 1", "Textfeld 9", "Textfeld 7")).Item(2).TextFrame2.TextRange.Text

würde Dir dann entsprechend den Text vom Textfeld 9 bringen
Hallo,

vielen Dank schauan. Allerdings kenne ich mich mit Excel nicht so aus. Wo müsste ich denn die Zeile reinkopieren oder was müsste ich damit ersetzen damit es funktioniert? 

Code:
   End If
   If .Address = "$A$13" Then
      Select Case .Value
         Case "TXCraig1"
            Simple 1, 1
            Simple 2, 2
         Case "Tony Gemignani"
            Simple 1, 3
            Simple 2, 4
         Case "Pizza Hut Pan Pizza"
            Simple 1, 9
            Simple 2, 10
      End Select
   End If
End With
End Sub

Private Sub Simple(vTo, vFrom)

Sheets("Zubereitung").Shapes.Range(Array("Textfeld 1", "Textfeld 2", "Textfeld 3", "Textfeld 9", "Textfeld 10")).Item(vFrom).TextFrame2.TextRange.Copy
Sheets("Pizza").Shapes.Range(Array("Textfeld 1", "Textfeld 2")).Item(vTo).TextFrame2.TextRange.Paste

End Sub

Muss man eigentlich alle Textfelder einzeln eintragen? Kann man nicht sagen: "Das Suchfeld (Range) im Tabellenblatt "Zubereitung" sind alle "Textfeld XX" (XX = jede Zahl) oder Textfeld 1-30?" Wie man das eben mit Zahlen auch macht.
Hallöchen,

in Anlehnung an Uwe's Vorschlag

statt
Code:
Case "Pizza Hut Pan Pizza"
            Simple 1, 9
            Simple 2, 10

dann

Code:
Case "Pizza Hut Pan Pizza"
  Simple 1, 4
  Simple 2, 5


Textfeld 9 ist in dem Array der 4. Eintrag und Textfeld 10 der 5.
Hi André,

(08.09.2020, 17:10)schauan schrieb: [ -> ]Textfeld 9 ist in dem Array der 4. Eintrag und Textfeld 10 der 5.
tja, aber auf dem Foto waren es 5 und 6. Undecided

Gruß Uwe
Jetzt hab ich es glaub ich verstanden:

Es kommt auf die Reihenfolge im "Array" an.

Beispiel:
Sheets("Zubereitung").Shapes.Range(Array("Textfeld 1", "Textfeld 9", "Textfeld 7", "Textfeld 8", "Textfeld 5")).Item(vFrom).TextFrame2.TextRange.Copy
  • Textfeld 1 = 1
  • Textfeld 9 = 2
  • Textfeld 7 = 3
  • Textfeld 8 = 4
  • Textfeld 5 = 5