Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Abschneiden von Texten verhindern

Abschneiden von Texten verhindern
17.06.2020 10:29:19
Texten
Hallo,
ich habe eine Tabelle, gefüllt mit Formeln, die entweder einen Text ausgeben, oder entsprechende Zelle leer lassen ("").
Mein Problem ist, dass die Zellen aufgrund der Darstellung (Kalender) relativ klein sind. Der einzutragende Text ist zu groß für das Textfeld und wird deswegen leider durch die rechts benachbarte Zelle "abgeschnitten", bzw. nicht dargestellt, weil die benachbarte Zelle eben nicht leer ist, sondern eine Formel enthält.
Ich suche nach einer Möglichkeit, den ausgegeben Text über die rechts benachbarten Zellen drüberzuschreiben, ohne dass
- ich dort die Formel herausnehmen muss
- ich die Zellgröße anpassen muss
- ein Zeilenumbruch nötig wird
Da ich nach erster Recherche schon befürchte, dass so ein Textüberlauf nicht möglich sein wird,
freue ich mich auch sehr über eine VBA Lösung, die nur die entsprechenden Zellen mit Text füllt und die übrigen leer lassen würde. Dadurch würde o.g. Problem wohl garnicht erst auftreten.
Leider reichen meine VBA-Kenntnisse hierfür nicht aus.
Ich bin dankbar für jede Hilfe!
Marcel
_______________________________
Anhang: https://www.herber.de/bbs/user/138358.xlsx
- Ausführlicheres Beispiel in Blatt 1
- Minimal-Beispiel in Blatt 2
Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abschneiden von Texten verhindern
17.06.2020 10:50:12
Texten
Hallo Marcel,
gehe auf Zellen formatieren... und anschließend im Dialogfenster auf den Reiter Ausrichtung. Setze im Abschnitt Textsteuerung einen Haken bei An Zellgröße anpassen.
Viele Grüße
Martin
AW: Abschneiden von Texten verhindern
17.06.2020 15:10:43
Texten
Danke für deine Antwort, Martin.
Leider ändert sich dadurch nur die Schriftgröße und der Text wird unlesbar klein.
Anzeige
Text der Zellgrösse anpassen! (owT)
17.06.2020 10:50:29
EtoPHG

AW: Text der Zellgrösse anpassen! (owT)
17.06.2020 15:14:17
Marcel
Dadurch wird die Schrift leider unlesbar klein
AW: Abschneiden von Texten verhindern
17.06.2020 11:09:46
Texten
Hallo Marcel,
falls Du eine VBA-Lösung suchst, teste mal folgendes Makro:
Ich denke, das Anpassen an die Zellgröße bringt Dich nicht weiter. Die Texte könnten zu klein werden.
Option Explicit
Sub FuelleAus()
 Dim rZelle As Range
 Dim sBereich As String
 Dim WSh As Worksheet
 
 sBereich = "$G$13:$AZ$15"      'Hier den Bereich festlegen
 
 With Application
   .ScreenUpdating = False
   .Calculation = xlCalculationManual
 End With
 
 Set WSh = Sheets("Tabelle1")
 For Each rZelle In WSh.Range(sBereich)
  
   With rZelle
     If (WSh.Cells(WSh.Range(sBereich).Row - 1, .Column).Value - 1) _
      = (WSh.Cells(.Row, "D").Value - Cells(.Row, "C").Value) Then
         rZelle.Value = WSh.Cells(.Row, "B").Value
     Else
         rZelle.Value = ""
     End If
   End With
 
 Next rZelle
 With Application
   .ScreenUpdating = True
   .Calculation = xlCalculationAutomatic
 End With
 
End Sub

Viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: Abschneiden von Texten verhindern
17.06.2020 15:30:47
Texten
Karl-Heinz,
vielen Dank für deine Lösung! Es funktioniert exakt wie gewollt = )
Für größere Bereich braucht dieses Makro "relativ lange", um den Bereich zu aktualisieren, was bei häufigen Änderungen stören könnte.
Es wäre super, wenn nach dem Editieren einer Zelle, das Makro automatisch für nur diese Zeile ausgeführt wird, um die Rechenzeit zu verkürzen.
Hierzu müsste man den Bereich wohl anpassen auf soetwas wie ActiveCell.Row()?
Anzeige
AW: Abschneiden von Texten verhindern
17.06.2020 15:39:36
Texten
Den Bereich auf Folgendes zu ändern, hat leider nicht funktioniert:
sBereich = "cell(ActiveCell.Row(),7):cell(ActiveCell.Row(),52)"

AW: Abschneiden von Texten verhindern
17.06.2020 16:00:22
Texten
Hi,
Du darfst die Anweisungen ja auch nicht in "" setzen, dann wäre es ja ein Text/String.
Du müsstest es schon so machen:
sBereich = Range(Cells(ActiveCell.Row(), 7), Cells(ActiveCell.Row(), 52)).Address
VG KH
Anzeige
AW: Abschneiden von Texten verhindern
17.06.2020 16:26:59
Texten
Das führt bei mir leider zu einer Fehlermeldung.
Wäre super, wenn du noch einmal über das Macro schauen könntest.
Option Explicit
Sub FuelleAus()
Dim rZelle As Range
Dim sBereich As Range
Dim WSh As Worksheet
sBereich = Range(Cells(ActiveCell.Row(), 7), Cells(ActiveCell.Row(), 52)).Address      'Hier  _
den Bereich festlegen
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
Set WSh = Sheets("Tabelle1")
For Each rZelle In WSh.Range(sBereich)
With rZelle
If (WSh.Cells(WSh.Range(sBereich).Row - 1, .Column).Value - 1) _
= (WSh.Cells(.Row, "D").Value - Cells(.Row, "C").Value) Then
rZelle.Value = WSh.Cells(.Row, "B").Value
Else
rZelle.Value = ""
End If
End With
Next rZelle
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Anzeige
AW: Abschneiden von Texten verhindern
17.06.2020 16:49:57
Texten
Ok, wenn Du es so lösen möchtest, dann siehe nachfolgenden Code.
Ich hatte die Kopfzeile dynamisch gemacht, das passte jetzt nicht mehr, sie muss ja immer 12 sein.
Und bitte eins bedenken: Der Cursor kann sonst wo stehen, z.B. in Zeile 5. Dann haut er Dir ohne Sicherheitsnetz ohne Nachfrage dort ggf. alles kaputt.
Deshalb schau noch mal meine vorherige Lösung an, die immer dann läuft, wenn Du eine Eingabe im bestimmten Bereich gemacht hast. Allerdings muss dort auch die Kopfzeile angepasst werden.
Sub FuelleAus()
 Dim rZelle As Range
 Dim sBereich As String
 Dim WSh As Worksheet
 With Application
   .ScreenUpdating = False
   .Calculation = xlCalculationManual
 End With
 
 Set WSh = Sheets("Tabelle1")
 sBereich = WSh.Range(WSh.Cells(ActiveCell.Row(), 7), _
            WSh.Cells(ActiveCell.Row(), 52)).Address
 
 For Each rZelle In WSh.Range(sBereich)
  
   With rZelle
     If (WSh.Cells(12, .Column).Value - 1) _
      = (WSh.Cells(.Row, "D").Value - Cells(.Row, "C").Value) Then
         rZelle.Value = WSh.Cells(.Row, "B").Value
     Else
         rZelle.Value = ""
     End If
   End With
 
 Next rZelle
 With Application
   .ScreenUpdating = True
   .Calculation = xlCalculationAutomatic
 End With
 
End Sub

Viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: Abschneiden von Texten verhindern
17.06.2020 16:55:55
Texten
HI hier noch die angepasste, vorherige Lösung noch mal.
Such Dir was aus.
Sub FuelleAus(Target As Range)
 Dim rZelle As Range
 Dim sBereich As String
 Dim WSh As Worksheet
 
 sBereich = "$G$" & Target.Row & ":$AZ$" & Target.Row      'Hier den Bereich festlegen
 
 With Application
   .ScreenUpdating = False
   .Calculation = xlCalculationManual
 End With
 
 Set WSh = Sheets("Tabelle1")
 For Each rZelle In WSh.Range(sBereich)
  
   With rZelle
     If (WSh.Cells(12, .Column).Value - 1) _
      = (WSh.Cells(.Row, "D").Value - Cells(.Row, "C").Value) Then
         rZelle.Value = WSh.Cells(.Row, "B").Value
     Else
         rZelle.Value = ""
     End If
   End With
 
 Next rZelle
 With Application
   .ScreenUpdating = True
   .Calculation = xlCalculationAutomatic
 End With
 
End Sub
'Dieser Teil ins Tabellenmodul
Private Sub Worksheet_Change(ByVal Target As Range)
 
 With Target
  If .Row > 12 And .Column > 1 And .Column < 6 Then
     If .Value <> "" Then Call FuelleAus(Target)
  End If
 End With
End Sub

Viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: Abschneiden von Texten verhindern
17.06.2020 17:03:25
Texten
Ich danke dir vielmals, Karl-Heinz!
AW: Abschneiden von Texten verhindern
17.06.2020 15:51:05
Texten
Hallo Marcel,
danke für die Rückmeldung.
Natürlich können wir gerne noch an der Geschwindigkeit drehen. Schau mal, ob der u.a. Code schon besser ist.
Ich weiß allerdings nicht, was relativ lange heißen soll und wie/wo Du das Starten des Makros eingebaut hast.
Bei mir dauert die Aktualisierung der drei Zeilen exact 0.8 Sekunden.....
Option Explicit
Sub FuelleAus(Target As Range)
 Dim rZelle As Range
 Dim sBereich As String
 Dim WSh As Worksheet
 
 sBereich = "$G$" & Target.Row & ":$AZ$" & Target.Row      'Hier den Bereich festlegen
 
 With Application
   .ScreenUpdating = False
   .Calculation = xlCalculationManual
 End With
 
 Set WSh = Sheets("Tabelle1")
 For Each rZelle In WSh.Range(sBereich)
  
   With rZelle
     If (WSh.Cells(WSh.Range(sBereich).Row - 1, .Column).Value - 1) _
      = (WSh.Cells(.Row, "D").Value - Cells(.Row, "C").Value) Then
         rZelle.Value = WSh.Cells(.Row, "B").Value
     Else
         rZelle.Value = ""
     End If
   End With
 
 Next rZelle
 With Application
   .ScreenUpdating = True
   .Calculation = xlCalculationAutomatic
 End With
 
End Sub
'Dieser Teil ins Tabellenmodul
Private Sub Worksheet_Change(ByVal Target As Range)
 
 With Target
  If .Row > 12 And .Column > 1 And .Column < 6 Then
     If .Value <> "" Then Call FuelleAus(Target)
  End If
 End With
End Sub

Viele Grüße aus Freigericht
Karl-Heinz

Anzeige
Lege ein unsichtbares Textfeld darüber, ...
17.06.2020 13:48:31
Luc:?
…Marcel,
das mit der Zelle verlinkt ist und bei Klick auf diese sichtbar wird. Alternativ könnte die Zelle auch einen Hyperlink (HL) auf sich selbst enthalten, wobei ihr sichtbar sein sollender Inhalt oder ein Symbol angezeigt wird und der wesentliche TextInhalt im HL-InfoText steht, der bei MauszeigerBerührung angezeigt wird.
Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Lege ein unsichtbares Textfeld darüber, ...
17.06.2020 15:13:07
Marcel
Danke für deine Antwort, Luc.
Um ehrlich zu sein, verstehe ich deine Antwort allerdings nicht. Kannst du mir hierzu eine Beispieltabelle hochladen?
Falls du noch Interesse hast, ...
17.06.2020 23:47:34
Luc:?
…Marcel,
mitteilen und dann AW demnächst.
Luc :-?
AW: Abschneiden von Texten verhindern
17.06.2020 15:18:28
Texten
Hi
füge doch einen "Akutalisieren-Button" ein.
dieser sollte folgende Aktionen ausführen:
1. die bisher verwendete Formel in alle Zellen einfügen
2. die Formeln durch ihren Wert ersetzen
3. Zellen, die den Text "" enthalten, in echte Leerzellen umwandeln, damit diese überschrieben werden
also im Prinzip so:
With Range("dein Zellbereich")
.ForumlaR1C1 = "=hier die Formel in R1C1-Schreibweise"
.Formula = .Value
End With
dieser Code müsste dann zum Aktualisieren ausgeführt werden, entweder per Button oder automatisiert über ein geeignetes Event, je nachdem wo die Daten herkommen.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Textüberlauf in Excel verhindern: So geht's


Schritt-für-Schritt-Anleitung

  1. Zellen formatieren:

    • Klicke mit der rechten Maustaste auf die betroffenen Zellen.
    • Wähle „Zellen formatieren…“.
    • Gehe zum Reiter „Ausrichtung“.
    • Setze ein Häkchen bei „An Zellgröße anpassen“.
    • Dies sorgt dafür, dass der Text in der Zelle bleibt und nicht abgeschnitten wird.
  2. VBA-Makro verwenden:

    • Öffne den VBA-Editor (ALT + F11).
    • Füge ein neues Modul hinzu und kopiere folgendes Makro hinein:

      Sub FuelleAus()
      Dim rZelle As Range
      Dim sBereich As String
      Dim WSh As Worksheet
      
      sBereich = "$G$13:$AZ$15" ' Hier den Bereich festlegen
      
      Set WSh = Sheets("Tabelle1")
      For Each rZelle In WSh.Range(sBereich)
         With rZelle
             If (WSh.Cells(.Row - 1, .Column).Value - 1) = (WSh.Cells(.Row, "D").Value - Cells(.Row, "C").Value) Then
                 rZelle.Value = WSh.Cells(.Row, "B").Value
             Else
                 rZelle.Value = ""
             End If
         End With
      Next rZelle
      End Sub
    • Dies hilft, den Text in der Zelle zu halten und verhindert, dass der Text über die Zelle hinausgeht.

Häufige Fehler und Lösungen

  • Text wird abgeschnitten:

    • Stelle sicher, dass die Option „An Zellgröße anpassen“ aktiviert ist. Wenn der Text zu klein wird, könnte ein Zeilenumbruch erforderlich sein.
  • VBA-Makro funktioniert nicht:

    • Überprüfe, ob der Zellbereich korrekt definiert ist. Achte darauf, dass die Zelle, in die der Text geschrieben werden soll, nicht durch eine Formel besetzt ist.

Alternative Methoden

  • Verwendung eines unsichtbaren Textfeldes:

    • Du kannst ein unsichtbares Textfeld über die Zelle legen, das den Text anzeigt, wenn du mit der Maus darüber fährst. Dies kann nützlich sein, um den Text zu zeigen, ohne die Zellen zu verändern.
  • Hyperlinks:

    • Füge einen Hyperlink in die Zelle ein, der den Text im Info-Text anzeigt. Dies ist eine kreative Möglichkeit, um den Inhalt zugänglich zu machen, ohne die Zellenstruktur zu stören.

Praktische Beispiele

  • Angenommen, du hast in Zelle B2 den Text „Dies ist ein sehr langer Text, der nicht in die Zelle passt“.

    • Stelle sicher, dass die Zellen zu deiner Tabelle in der Breite nicht kleiner als die benötigte Breite sind, um den Text nicht abzuschneiden.
  • Wenn du ein VBA-Makro verwendest, um die Zellen nur zu füllen, wenn bestimmte Bedingungen erfüllt sind, sorgt das dafür, dass die Zellen nicht mit leeren Werten überflutet werden und der Text nicht über die Zellen hinausgeht.


Tipps für Profis

  • Automatisierung durch Ereignisse:

    • Nutze die „Worksheet_Change“-Ereignisprozedur, um das Makro automatisch auszuführen, wenn eine Zelle bearbeitet wird. Das verbessert die Performance und sorgt dafür, dass nur die betroffenen Zeilen aktualisiert werden.
  • Formatierung anpassen:

    • Experimentiere mit verschiedenen Schriftgrößen und -arten, um sicherzustellen, dass der Text gut lesbar bleibt, auch wenn er in der Zelle bleibt.

FAQ: Häufige Fragen

1. Wie kann ich verhindern, dass der Text in der Zelle abgeschnitten wird?
Aktiviere die Option „An Zellgröße anpassen“ in den Zellenformatierungseinstellungen.

2. Was kann ich tun, wenn der Text weiterhin nicht sichtbar ist?
Verwende ein VBA-Makro, um sicherzustellen, dass der Text nur in der Zelle angezeigt wird und nicht in angrenzende Zellen überläuft.

3. Gibt es eine Möglichkeit, den Text automatisch zu aktualisieren?
Ja, du kannst ein Makro an das „Worksheet_Change“-Ereignis binden, um Änderungen automatisch zu verarbeiten.

4. Wie kann ich den Text in der Zelle besser lesbar machen?
Spiele mit der Schriftgröße und der Zellenausrichtung, um die Lesbarkeit zu verbessern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige