Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
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
Inhaltsverzeichnis

Zellen anpassen

Zellen anpassen
urmila
Hallo,
ich hoffe ihr könnt mir weiterhelfen, ich habe zwar bereits einige Beiträge im Forum gesehen und gegoogelt, aber nichts dazu gefunden.
Mein Anliegen ist, ich habe in der Zelle B5 ein Text eingetippt, nun soll der Text automatisch (VBA) die Zellen der aktiven Zeile B:G verbunden werden. Es darf jedoch kein Zeilenumbruch erlauben und soll anhand der Länge des Textes die Zeilen trennen und verbinden.
z.B. In Zelle B5 steht drin:
Während die oben angeführte Definition eines Textes als „abgegrenzte schriftliche oder potentiell zu verschriftlichende Äußerung“ im Alltag meist ausreichend ist, führt eine genauere, wissenschaftliche Betrachtung zu komplexeren Definitions- und Beschreibungsversuchen
(Arial, Schriftgröße 10)
Das soll nun laut der Länge des Textes automatisch die geforderten Zellen messen, diese verbinden und einen Zeilenumbruch einfügen. In dem Fall wären das dann die Zellen B5:G8 die Markierung und dann der Zeilenumbruch und so weiter...
Ich hoffe es war verständlich....
Danke und LG
Urmila

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zellen anpassen
24.06.2010 15:59:35
fcs
Hallo Urmilla,
wozu soll der Unfug -ich nenn das jetzt einfach mal so- denn gut sein?
Warum machst du die Spalte B nicht ausreichend breit und formatierst die Zellen der Spalte mit Zeilenumbruch?
### Excel ist ein Tabellenkalkulations-Programm ###
Es ist kein Textverarbeitungsprogramm und schon garnicht ein Text-/Grafik-Layout-Programm.
Excel kann einigermassen ordentlich rechnen und Daten in Listenform erfassen, verwalten und auswerten (Diagramme/Pivotberichte). Alles andere drum herum ist schmückendes Beiwerk, und sollte auf das notwendigste beschränkt werden.
Gruß
Franz
Anzeige
AW: könnte mir vielleicht jemand weiterhelfen thx
24.06.2010 19:01:55
urmila
siehe bitte meine ursprungsmail
ich kenne/kannte das aus anderer sicht....
LG
Urmila
AW: könnte mir vielleicht jemand weiterhelfen thx
25.06.2010 08:28:39
fcs
Hallo Urmila,
bevor ich mich hier an die Kreation eines relativ komplexen Makros mache wüsste ich schon ganz gerne den Hintergrund nach dem Warum bestimmter Aktionen.
Oft genug werden nämlich Wünsche geäußert, weil die Formatierungsmöglichkeiten unter Excel nicht bekannt sind oder ausgereizt werden oder es wurde ein "unglücklicher" Ansatz bei der Lösung einer Aufgabe gewählt.
In soweit hast du zumindest meine 2. Frage nicht beantwortet.
Da
a) verbundene Zellen und
b) die Ermittlung der benötigten Breite eines Textes (spez. Proportionalschriften)
in Excel ihre Tücken haben, kommt man um irgendwelche Klimmzüge kaum herum.
Nachfolgend ein Makro, das auf Eingaben in Zellen in Spalte B reagiert und in etwa das macht was dir vorschwebt.
Gruß
Franz
Option Explicit
' Makro in einem Tabellenblatt-Modul
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dblHoehe As Double, Zeile As Long, sText As String, rngMerge As Range
Dim sTextRest As String, Pos1 As Long, Pos2 As Long, Zeichen As Long
If Target.Column = 2 And Target.Row > 2 And Target.Cells.Count = 1 Then
'Zellen Spalten B:G verbinden und ggf. auf mehrere Zeilen verteilen.
Application.EnableEvents = False
sText = Target.Text
sTextRest = sText
dblHoehe = Target.EntireRow.Height 'Zeilenhöhe merken
Zeile = Target.Row
NextZeile:
Pos1 = 1: Pos2 = 1
'Zellen Spalten B bis G verbinden
Set rngMerge = Range(Cells(Zeile, 2), Cells(Zeile, 7))
If rngMerge.MergeCells = True Then rngMerge.UnMerge
'Zellbereich temporär umformatieren
rngMerge.HorizontalAlignment = xlCenterAcrossSelection
rngMerge.WrapText = True
rngMerge.EntireRow.AutoFit
rngMerge.Range("A1").Value = sTextRest
'Zeilenhöhe prüfen
If Rows(Zeile).Height > dblHoehe Then
'Text wortweise in Zelle einfügen
For Zeichen = Pos1 To Len(sTextRest)
If Mid(sTextRest, Zeichen, 1) = " " Then
rngMerge.Range("A1").Value = Left(sTextRest, Zeichen - 1)
If Rows(Zeile).Height 

Anzeige
AW: D.A.N.K.E
29.06.2010 09:38:28
urmila
Hallo Franz,
ein Freund fragte nach so einer Lösung. Warum ausgerechnet so weiß ich leider auch nicht... ich kam nicht wirklich dazu..... jedenfalls habe ich soeben dein Beitrag mir angeschaut und ausgetestet...scheint so als wäre das richtige.....nur werde ich nun versuchen wie man das per Knopfdruck realisieren kann.
Ich dachte immer Excel = unendlich viele Lösungen
Ich bedanke ich mich bei DIR vielmaals und hoffe du würdest mir in Zukunft auch weiterhelfen.
Danke und lieben Gruß
Urmila
AW: D.A.N.K.E
29.06.2010 13:38:37
fcs
Hallo Urmilla,
wenn du die Prozedur via Schaltfläche starten willst, dann solltest du sie durch Parameter-Übergabe etwas Variabler gestalten.
Gruß
Franz
Sub Schaltfläche1_BeiKlick()
'lange Texte in Spalte B (2) aufteilen auf Spalten 2 bis z (B:G)
Call TextTeilen(Zelle:=ActiveCell, Spalte1:=2, Spalte2:=7, Zeile1:=2)
End Sub
' Makro in einem Allgemeinen-Modul
Public Sub TextTeilen(Zelle As Range, Spalte1 As Long, Spalte2 As Long, _
Optional Zeile1 As Long = 1)
Dim dblHoehe As Double, Zeile As Long, sText As String, rngMerge As Range
Dim sTextRest As String, Pos1 As Long, Pos2 As Long, Zeichen As Long
'Zelle    = Zelle in Spalte1, in der der zu verarbeitende Text steht
'Spalte1  = Nummer der linken Spalte der zu verbindenden Zellen
'Spalte2  = Nummer der rechten Spalte der zu verbindenden Zellen
'Zeile1   = Nummer der Zeile oberhalb der das Makro keine Aktionen ausführen soll
If Zelle.Column = Spalte1 And Zelle.Row >= Zeile1 And Zelle.Cells.Count = 1 Then
'Zellen Spalten B:G verbinden und ggf. auf mehrere Zeilen verteilen.
Application.EnableEvents = False
sText = Zelle.Text
sTextRest = sText
dblHoehe = Zelle.EntireRow.Height 'Zeilenhöhe merken
Zeile = Zelle.Row
NextZeile:
Pos1 = 1: Pos2 = 1
'Zellen Spalten B bis G verbinden
Set rngMerge = Range(Cells(Zeile, Spalte1), Cells(Zeile, Spalte2))
If rngMerge.MergeCells = True Then rngMerge.UnMerge
'Zellbereich temporär umformatieren
rngMerge.HorizontalAlignment = xlCenterAcrossSelection
rngMerge.WrapText = True
rngMerge.EntireRow.AutoFit
rngMerge.Range("A1").Value = sTextRest
'Zeilenhöhe prüfen
If Rows(Zeile).Height > dblHoehe Then
'Text wortweise in Zelle einfügen
For Zeichen = Pos1 To Len(sTextRest)
If Mid(sTextRest, Zeichen, 1) = " " Then
rngMerge.Range("A1").Value = Left(sTextRest, Zeichen - 1)
If Rows(Zeile).Height 

Anzeige
versucht - klappt - super lieben Dank :)
30.06.2010 08:13:33
urmila
LG
Urmila

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige