Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text auf Zellbereich verteilen

Text auf Zellbereich verteilen
mark
moin,
ich hatte mal in einer Firma eine Funktion, die hat einen Text, der in eine Zelle geschrieben wurde (z.B. einen Satz der länger war als eine Seite breit ist) per Icon auf einen markierten Bereich aufgeteilt. Ich habe dann einfach 2 oder 3 Zeilen in Seitenbreite markiert und die Umbrüche innerhalb der Zelle haben sich dann so gesetzt, dass der Text (und zwar noch in einer Zelle) so formatiert war, dass er gut auf die Seite gepasst hat. Kennt jemand die Funktion? Die fehlt mir manchmal sehr !
PS: Mit Zellen verbinden möchte ich nicht arbeiten, da ich die Texte als Fußtexte unter einer Tabelle brauche. Oder geht es in Excel wie in Word mit Fußnoten (habe ich nirgendwo gefunden)
AW: Text auf Zellbereich verteilen - Zusatzfrage
19.08.2009 09:47:26
fcs
Hallo Mark,
du möchtest als nicht einfach "nur" mit dem Zellen-Format Ausrichtung-Textausrichtung "Zeilenumbruch" arbeiten?
Sondern am Ende jeder Zeile innerhalb der Zelle soll bei überlangen Texten zusätzlich ein Zeilenumbruch stehen, den man manuell mit der Tastenkombination Alt+Enter erzeugt?
Gruß
Franz
AW: Text auf Zellbereich verteilen
19.08.2009 09:48:32
Ramses
Hallo
Normalerweise findest du das in den Zell-Format einstellungen: "Format - Mehr - Regoister Ausrichtung - Option Zeilenumbruch"
Gruss Rainer
Aber meine Herren, er hat doch erklärt,...
19.08.2009 10:02:41
Luc:-?
...was er will — Fußnoten unter einer Tabelle; da kann man sonst wirklich nur mit verbundenen Zellen oder alternativ mit Textfeldern arbeiten... ;-)
Moin, Luc :-)
Anzeige
Unnú hatz ihm d'Sprache vaschlarn... ;-)
19.08.2009 11:58:33
Luc:-?
:-?
AW: Unnú hatz ihm d'Sprache vaschlarn... ;-)
19.08.2009 13:50:32
mark
danke erst mal für die vielen tipps, mußte zwischen durch auch ein wenig arbeiten (meeting) leider ist die zündende lösung noch nicht dabei. Ich habe mich auch etwas undeutlich ausgedrückt, ist mir später aufgefallen.
Ich möchte einen überlangen Text, der in einer Zelle (A1) steht und weit über die nächsten Spalten geht auf eine Länge begrenzen, die ich mit einem markierten Bereich wähle und den Rest in die darunter liegende Zelle schicken.
Die Funktion (evtl. hat da in meiner alten Firma jemand ein Makro geschrieben) hieß ganz einfach TEXT und war als Icon in meinem Excel auswählbar.
Beispiel:
Der Text in Zelle A1 "Heute ist Mittwoch der 19.08.2009 es ist ein wunderschöner Tag, die Sonne scheint und ich habe überhaupt keine Lust mehr zum Arbeiten und würde viel lieber am See sitzen."
geht ohne Umbruch bei mir bis N1 meine Seitenbreite ist aber nur A - G.
Ich markiere jetzt den Bereich A1 bis G1 und drücke auf meine Funktion "TEXT" . Der Satzteil "ich habe überhaupt keine Lust mehr zum Arbeiten und würde viel lieber am See sitzen. "
wandert in die Zelle A2.
Wenn ich nur A1-D1 markiere, verteilt sich der Text auf die erforderliche Anzahl an Zellen (A1 - A4)
Leider habe ich gar keine Ahnung von visual und Makros, daher wäre eine etwas genaue anleitung sehr schön, wenn mir jemand einen quelltext schickt.
Vielleicht war das jetzt präziser
vielen Dank und freue mich auf Hilfe
marK :-)
Anzeige
AW: Unnú hatz ihm d'Sprache vaschlarn... ;-)
19.08.2009 18:21:39
fcs
Hallo Mark,
hier mal ein Ansatz, der die Teil-Texte in einen Hilfsbereich überträgt und dabei überwacht, ob sich die Zeilenhöhe ändert.
Diese Makro kopierst du im VBA-Editor in ein allgemeiens Modul deiner Persönlichen Makro Arbeitsmappe (PERSONL.XLS).
Jetzt kannst in Excel eine Symbolleiste-Anpassen oder besser auch neu Anlegen.
Menü Ansicht--Symbolleisten--Anpassen.
Im Dialog Register "Symbolleisten" wählen, Neu (name für Leiste eingeben) und Ok.
Im Dialog Register "Befehle" unter "Kategorie" "Makros" wählen. Dann unter "Befehle" "Benutzerdefinierte Schaltfläche" wählen und bei gedrückter linker Maustaste in die neue Symbolleiste ziehen.
Rechte-Maus-Klick auf neues Symbol und Makro zuweisen und ggf. weitere Einstellungen für den Button machen.
Anpassen-Dialog schließen.
Gruß
Franz
P.S.: Es kann sein, dass der Bereich der gedruckten Daten vorübergehend in Unordnung gerät - wenn kein Druckbereich fest definiert ist. Sollte aber nach Speichern und erneutem Öffnen der Datei wieder ok sein
Sub TextVerteilen()
'Verteilt selektierten text in darunter liegende Zeilen
Dim Bereich As Range, Zelle As Range
Dim strText As String, strTextNeu As String, strTextAlt
Dim arrText, lngWorte As Long, zeile As Long, Hoehe As Double
Dim wks As Worksheet
Set Bereich = Selection
If Bereich.Rows.Count > 1 Then
MsgBox "Bitte Zellen nur in einer Tabellenzeile selektieren!"
Exit Sub
End If
Set wks = ActiveSheet
strText = Bereich.Range("A1").Value
arrText = Split(strText, " ")
'Zelle in Spalte unterhalb der Tabellendaten festlegen
With wks
Set Zelle = .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row + 10, Bereich.Column)
End With
'Selektierte Zelle kopieren in Zelle
Bereich.Range("a1").Copy Zelle
Zelle.ClearContents
Hoehe = Zelle.EntireRow.RowHeight 'Referenzhöhe für zeile merken
'Zellenbereich so formatieren, dass Zeilenhöhe angepasst wird, wenn zuviel Text
With Zelle
With wks.Range(Zelle, .Offset(1, Bereich.Columns.Count - 1))
.HorizontalAlignment = xlHAlignCenterAcrossSelection
.WrapText = True
End With
.Offset(0, Bereich.Columns.Count).WrapText = False
End With
zeile = 0
'gemerkte texte aus Array einlesen
For lngWorte = LBound(arrText) To UBound(arrText)
strTextNeu = strTextAlt & IIf(strTextAlt = "", "", " ") & arrText(lngWorte)
Zelle.Value = strTextNeu
'Zellhöhe prüfen
If Zelle.EntireRow.RowHeight > Hoehe Then
If zeile > 0 Then
'Format aus selektierter Zelle in folgezeile kopieren
Bereich.Copy
Bereich.Range("A1").Offset(zeile, 0).PasteSpecial Paste:=xlPasteFormats
End If
'Teiltext eintragen
Bereich.Range("A1").Offset(zeile, 0).Value = strTextAlt
'Vorgaben für nächste zeile setzen
strTextAlt = arrText(lngWorte)
zeile = zeile + 1
'Prüfen, ob letztes Wort eingelesen wurde
ElseIf lngWorte = UBound(arrText) Then
If zeile > 0 Then
'Format aus selektierter Zelle in folgezeile kopieren
Bereich.Copy
Bereich.Range("A1").Offset(zeile, 0).PasteSpecial Paste:=xlPasteFormats
End If
'Resttext eintragen
Bereich.Range("A1").Offset(zeile, 0).Value = strTextNeu
Else
strTextAlt = strTextNeu
End If
Next
'Prüf-/Testzellen wieder löschen
Zelle.Clear
Zelle.EntireRow.Delete
End Sub

Anzeige
Und was ist mit TxRows,...
20.08.2009 00:35:35
Luc:-?
...Mark?
Nehme an, du weißt nicht wie du das anwenden sollst?! Genau wie eine xlFkt — allerdings im Verbund mit anderen Fktt wie du den verlinkten Archiv-Threads entnehmen könntest. Dein Text kann dabei in einer separaten Zelle stehen oder gleich als Arg1 in der udFkt. Außerdem hast du die Möglichkeit, ein bedingtes Trennzeichen als Arg3 anzugeben (in den Text kannst du die an sinnvollen Stellen einfügen). Arg2 ist die vorgesehene maximale Länge einer Textzeile in Zeichen. Außerdem kann als Arg4 angegeben wdn, ob es sich um eine nicht-proportionale Schrift handelt (Courier wird automatisch erkannt!).
Die folgd Abbildung zeigt eine Anwendungsmöglichkeit mit einer Formel. Dabei kommt auch die in der Abbildung dargestellte udFkt Splitt zum Einsatz, um die Zeichenkette an den eingeschobenen Zeilenumbrüchen zu trennen. Mit INDEX wird dann die jeweilige Teilkette ausgewählt. Statt INDEX kannst du auch MTRANS verwenden, um mit einer Matrixfml Teiltexte auf ausgewählte Zeilen zu verteilen.
Beide udFktt müssen in ein sog normales Modul des VB-Projektes der Arbeitsmappe eingetragen wdn. Ggf kannst du solche Prozeduren auch in einem separaten Projekt sammeln, das du auch als AddIn in Xl einbinden kannst (dazu findest du einiges im Herber-Archiv)...
Userbild
Gruß Luc :-?
PS: Eine kurze Mitteilung deiner Entscheidung würde uns schon interessieren...
Anzeige
Noch ein Hitze-Opfer, schade! owT
21.08.2009 14:15:03
Luc:-?
:-?
AW: Noch ein Hitze-Opfer, schade! owT
24.08.2009 09:19:53
mark
moin allerseits,
kein Hitzeopfer nur im normalen Wochenendwahnsinn begraben. Ich habe mir die vielen Vorschläge genau angeschaut. Dem, was ich mir vorgestellt habe, kommt der Quellcode von Franz am nächsten (bzw. ist es genau das was ich mir vorgestellt habe).
Einfügen in VisualBasic Editor, abspeichern ausführen etc hat wunderbar geklappt. Ich finde aber leider meine Persönlich.xls nicht. Da gibt´s nur die Möglichkeit, das Makro in der aktuellen Arbeitsmappe abzuspeichern. Darüber hinaus gibt´s nur das schreibgeschütze Modul Eurotool.
Wie sich jeder vorstellen kann, hätte ich diese Funktion gern in jeder neuen Arbeitsmappe. Gibt´s da noch einen Tip?
danke marK :-)
Anzeige
AW: Persönliche Makroarbeitsmappe einrichten
24.08.2009 17:17:53
fcs
Hallo Mark,
falls die perönliche Makroarbeitsmappe noch nicht angelegt ist, dann zeichne mit dem Makrorecorder ein Makro auf. Als Speicherort dann im angezeigten Dialog die persönliche Makroarbeitsmappe auswählen.
Excel legt diese Datei an und du kannst jederzeit auf die in dieser Mappe gespeicherten Makros zugreifen.
Gruß
Franz
Eine Fkt per Icon...? Gibt's wohl nicht,...
19.08.2009 09:57:01
Luc:-?
...Mark,
aber wie wär's mit TxRows? Diese (echte) udFkt dürfte dein Problem ohne verbundene Zellen lösen... ;-)
Moin, Luc :-?
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige