Liebes Forum,
ich brauche Eure Unterstützung bei folgender Situation:
Textbox_Test.xlsm (Größe: 30,76 KB / Downloads: 1)
Ich bekomme Feedback von Kunden zu 3 Fragen. Die Antworten sind in 3 Spalten zeilenweise je Kunde in einer Exceltabelle.
Dieses Kundenfeedback soll in Stichpunktform, an das DIN A4 Format angepasst, präsentier- und druckbar sein.
In der angehängten Beispieldatei enthalten die Zellen B3:B5 die Kundenfeedbacks je Frage. Im Original, hole ich mir diese Form mit der TEXTVERKETTEN-Funktion (ich habe hier nur die Werte eingefügt). Das funktioniert dynamisch bei neuen Daten in der Tabelle und passt perfekt.
Mein Gedanke, dieses Feedback in die "richtige" Form zu bringen, war die Textbox zu nutzen und diese mit VBA auch direkt passend zu formatieren.
Was funktioniert bis jetzt: Die Textbox hält den Abstand zum linken Blattrand ein und die festgelegte Breite. Mit AutoSize ist die Länge der Textbox ebenfalls passend eingestellt.
Wo liegt die Herausforderung?
- Mit dem aktuellen Code wird kein automatischer Zeilenumbruch mehr am Ende der Textbox durchgeführt! (funktioniert einwandfrei, wenn Autosize auskommentiert wird!?)
- Bei festgelegter Anfangsbreite, kann ich dafür die Länge nicht dynamisch festlegen, da ich keine Idee habe wie das zu ermitteln ist.
Das sind meine 2 wichtigsten Punkte Wenn ich AutoSize = False vor .Width = Breite einfüge funktioniert der Zeilenumbruch wieder, dafür ist die Textbox in der Länge dann zu kurz. Es muss doch eine Möglichkeit geben, nur die Länge flexibel zu halten?!?
- Im Tabellenblatt "Feedback" werden die Zeilen der Textbox durch den unteren Seitenrand einfach durchgeschnitten, wie lässt sich das vermeiden?
Wäre auch noch prima
- Wie kann ich einen bestimmten einzigartigen Text formatieren, ohne seine genaue Position in der Textbox zu kennen? (konkret die 3 Fragen in Schriftgröße 11 und Farbe RGB 100,100,100)
Nice to have Über Len(Cells(3,2).Value) konnte ich die Position doch ermitteln!
Falls Ihr eine grundlegend einfachere Umsetzung kennt bin ich dafür genauso offen, wie für eine Erweiterung meiner VBA Kenntnisse :)
Wer den Code gleich hier studieren möchte:
Wie immer vielen Dank vorab für Eure Mühe!
Sonnige Grüße,
Phiant
P.S.: Es gibt noch ein weiteres Makro in der Datei um die Position und Maße der Textbox auszulesen, das dient erstmal nur der Überprüfung, eventuell kann ich die Variablen aber noch anders einsetzen, falls mehrere Textboxen gebraucht werden oder sonstiges aufkommt (hatte ich in einem Forum gefunden).
ich brauche Eure Unterstützung bei folgender Situation:

Ich bekomme Feedback von Kunden zu 3 Fragen. Die Antworten sind in 3 Spalten zeilenweise je Kunde in einer Exceltabelle.
Dieses Kundenfeedback soll in Stichpunktform, an das DIN A4 Format angepasst, präsentier- und druckbar sein.
In der angehängten Beispieldatei enthalten die Zellen B3:B5 die Kundenfeedbacks je Frage. Im Original, hole ich mir diese Form mit der TEXTVERKETTEN-Funktion (ich habe hier nur die Werte eingefügt). Das funktioniert dynamisch bei neuen Daten in der Tabelle und passt perfekt.
Mein Gedanke, dieses Feedback in die "richtige" Form zu bringen, war die Textbox zu nutzen und diese mit VBA auch direkt passend zu formatieren.
Was funktioniert bis jetzt: Die Textbox hält den Abstand zum linken Blattrand ein und die festgelegte Breite. Mit AutoSize ist die Länge der Textbox ebenfalls passend eingestellt.
Wo liegt die Herausforderung?
- Mit dem aktuellen Code wird kein automatischer Zeilenumbruch mehr am Ende der Textbox durchgeführt! (funktioniert einwandfrei, wenn Autosize auskommentiert wird!?)
- Bei festgelegter Anfangsbreite, kann ich dafür die Länge nicht dynamisch festlegen, da ich keine Idee habe wie das zu ermitteln ist.
Das sind meine 2 wichtigsten Punkte Wenn ich AutoSize = False vor .Width = Breite einfüge funktioniert der Zeilenumbruch wieder, dafür ist die Textbox in der Länge dann zu kurz. Es muss doch eine Möglichkeit geben, nur die Länge flexibel zu halten?!?
- Im Tabellenblatt "Feedback" werden die Zeilen der Textbox durch den unteren Seitenrand einfach durchgeschnitten, wie lässt sich das vermeiden?
Wäre auch noch prima
- Wie kann ich einen bestimmten einzigartigen Text formatieren, ohne seine genaue Position in der Textbox zu kennen? (konkret die 3 Fragen in Schriftgröße 11 und Farbe RGB 100,100,100)
Nice to have Über Len(Cells(3,2).Value) konnte ich die Position doch ermitteln!
Falls Ihr eine grundlegend einfachere Umsetzung kennt bin ich dafür genauso offen, wie für eine Erweiterung meiner VBA Kenntnisse :)
Wer den Code gleich hier studieren möchte:
Code:
Sub Text_erstellen()
Dim Breite As Double
Dim Linker_Rand As Double
Breite = Application.CentimetersToPoints(17)
Linker_Rand = Application.CentimetersToPoints(1.8)
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, Linker_Rand, 100, _
Breite, 100).Select
With Selection
With .Characters.Font
.Name = "Arial"
.FontStyle = "regular"
.Size = 10.5
.ColorIndex = xlAutomatic
End With
.Name = "Feedback"
.ShapeRange.LockAspectRatio = msoFalse
.Text = Cells(3, 2) & vbLf & vbLf & Cells(4, 2) & vbLf & vbLf & Cells(5, 2)
.AutoSize = True
.Width = Breite
End With
End Sub
Wie immer vielen Dank vorab für Eure Mühe!
Sonnige Grüße,
Phiant
P.S.: Es gibt noch ein weiteres Makro in der Datei um die Position und Maße der Textbox auszulesen, das dient erstmal nur der Überprüfung, eventuell kann ich die Variablen aber noch anders einsetzen, falls mehrere Textboxen gebraucht werden oder sonstiges aufkommt (hatte ich in einem Forum gefunden).