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

Prüfen, ob Text in Zelle passt

Forumthread: Prüfen, ob Text in Zelle passt

Prüfen, ob Text in Zelle passt
08.02.2004 16:28:13
Jürgen Schaetzke
Hallo,
ich habe einen Kalender aufgebaut, der Veranstaltungen und Feiertage anzeigen soll. Wenn die Zellbreite nicht ausreicht,möchte ich die Ausgabezelle mit danebenliegende Zellen verknüpfen.
Gibt es dazu eine Möglichkeit zu prüfen, ob der Text in die Zelle passt?
Da die Zeichen unterschiedliche Breite haben und auch Fettschrift und Schriftgröße eine Rolle spielen, kann ich nicht die Anzahl der Buchstaben für die Prüfung verwenden.
Mit freundlichen Grüßen
Jürgen Schaetzke
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen, ob Text in Zelle passt
08.02.2004 16:32:42
Ulf
"die Ausgabezelle mit danebenliegende Zellen verknüpfen."
Wie ist das zu verstehen?
Ulf
AW: Prüfen, ob Text in Zelle passt
08.02.2004 16:46:48
Jürgen Schaetzke
Hallo Ulf,
Es sollen die Zellen verbunden werden.
Mit freundlichen Grüßen
Jürgen Schaetzke
AW: Prüfen, ob Text in Zelle passt
08.02.2004 16:56:18
Jürgen Schaetzke
Hallo,
ich habe es jetzt mal mit einem Label auf dem Arbeitsblatt probiert und Autosize auf true gestellt, damit ich mit kalender.Label1.Width die Länge ermitteln kann.
Nur werden anscheinend im Label andere Maßeinheiten verwendetet als bei einer Zelle, da der Vergleich eregibt, dass der text im label größer als die Zellbreite ist, obwohl die Textlänge optisch gesehen nur halb so groß ist wie die Zelle. Die fontangaben sind identisch.
Hat jemand vielleicht eine zündende Idee?
Mit freundlichen Grüßen
Jürgen Schaetzke
Anzeige
AW: Prüfen, ob Text in Zelle passt
08.02.2004 17:04:53
K.Rola
Hallo,
irgendwas verstehe ich nicht. Wie kommt der Text denn in die Zelle?
Wenn du ihn eingibts, siehst du doch ob er passt.
Gruß K.Rola
Grundproblem ?
08.02.2004 17:30:08
Ramses
Hallo Jürgen,
ich verstehe das Grundproblem schon nicht :-)
Wenn ich Text in eine Zelle schreibe der nicht "hineinpasst", so wird er doch automatisch über den Zellenrand hinausgeschrieben, WENN in der Nachbarzelle rechts davon NICHTS drin steht.
Wenn in der Nachbarzelle aber irgendwas steht, wird der Text ja abgeschnitten.
Bei dieser Fragestellung müsste dann aber automatisch die Nachbarzelle verbunden werden,... aber was passiert dann mit den Daten die dort eventuell drin stehen ? Verwerfen oder nicht ;-)

Gruss Rainer
Anzeige
AW: Grundproblem ?
08.02.2004 17:53:25
Jürgen Schaetzke
Hallo zusammen,
der Text wird aus einer DB gelesen und per VBA in die Zellen gestellt.
Da pro Tag mehrere Termine anstehen können, werden eventuell mehrere Spalten gefüllt und es würde wie Ramses richtig schreibt, der Text abgeschnitten. Dies darf aber nicht sein.
Der Textinhalt muss vollständig lesbar sein, da er auch gedruckt werden soll.
Mit freundlichen Gruß
Jürgen Schaetzke
Anzeige
AW: Prüfen, ob Text in Zelle passt
08.02.2004 18:05:08
Alex K.
Hallo Jürgen,
probiere es mal mit folgenen Makro. Über einen "dirty" Trick wird der Text erstmal getestet und wenn zu lang, dann werden die entsprechenden Zellen verbunden:

Public Sub ZellBreite()
Dim rng     As Range
Dim cnt     As Integer
'Text in eine Zelle schreiben, die nicht benötigt wird
With ActiveSheet.Range("AN60000")
'Startzelle A1 für Text
Set rng = ActiveSheet.Range("A1")
'Text zum Testen
.Value = "Telefontarifauskunft von der Quantum Software GmbH"
.Columns.AutoFit
If rng.Width < .Width Then
cnt = .Width / rng.Width
'Zellen ab Startzelle A1 bis A(cnt) verbinden
ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, cnt)).Merge
End If
'Text in Zelle A1 schreiben
rng.Value = .Value
End With
End Sub

Anzeige
Wirklich dirty,... aber raffiniert :-)) o.T.
08.02.2004 18:12:06
Ramses
...
AW: Prüfen, ob Text in Zelle passt
08.02.2004 18:27:19
K.Rola
Hallo,
gute Idee, aber das wird nicht klappen und wenn, dann nur zufällig.
Du müsstest schon die Spaltenbreiten der Zellen rechts neben A1
berücksichtigen.
Gruß K.Rola
AW: Prüfen, ob Text in Zelle passt
08.02.2004 18:28:24
Jürgen Schaetzke
Hallo Alex,
Herzlichen Dank :))
Das ist zwar nicht die elegante Lösung, die ich mir vorstellte, aber bisher die Beste, weil sie auch funktioniert.
Mit freundlichen Grüßen
Jürgen Schaetzke
Anzeige
Optimiert...
08.02.2004 18:43:54
Ramses
Hallo Jürgen
wie K.Rola auch schon bemerkte, dürfte das ganze nicht funktionieren wenn Text in den benachbarten Spalten steht, und es werden unterschiedliche Spaltenbreiten nicht berücksichtigt.
Deshalb hier etwas modifiziert:


Public Sub ZellBreite()
'von Alex K aus Herber.de
'Prüft ob ein Textstring in eine Zelle passt
'wenn nicht, werden automatisch entsprechend Zellen gemergt
'Modified by Ramses
'Prüfung auf unterschiedliche Spaltenbreite
'Prüfung ob Text vorhanden
Dim rng     As Range
Dim As Integer
Dim tmpWidth As Double
'Text in eine Zelle schreiben, die nicht benötigt wird
With ActiveSheet.Range("IV1")
    'Startzelle A1 für Text
    Set rng = ActiveSheet.Range("A1")
    'Text zum Testen
    .Value = "Telefontarifauskunft von der Quantum Software GmbH"
    'Automatisch die Breite anpassen lassen
    .Columns.AutoFit
    'Prüfung ob die Breite in Spalte A kleiner ist als
    'die automatisch angepasste Breite in IV1
    If rng.Width < .Width Then
        tmpWidth = 0
        n = 0
        Do Until tmpWidth > .Width
            'Prüfung ob benötigte Spalte leer ist
            If rng.Offset(0, n) <> "" Then
                MsgBox "Text kann nicht eingefügt werden" & vbCrLf & _
                    "weil in Spalte " & Columns(n + 1).Address & " Text vorhanden ist," & vbCrLf & _
                    "der für das Mergen benötigt wird"
                    Exit Sub
            End If
            tmpWidth = tmpWidth + rng.Offset(0, n).Width
            n = n + 1
        Loop
        'Zellen ab Startzelle A1 bis A(n) verbinden
        ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, n)).Merge
    End If
    'Text in Zelle A1 schreiben
    rng.Value = .Value
End With
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

Trotzdem,.... den Trick hat Alex rausbekommen :-))
Gruss Rainer
Anzeige
AW: Optimiert...
08.02.2004 19:02:34
Jürgen Schaetzke
Hallo Ramses,
danke für die Hilfe.
Mit freundlichen Grüßen
Jürgen Schaetzke
Danke an Rainer
08.02.2004 19:25:44
Alex K.
Hallo Rainer,
danke für die Optimierung. Wirklich super !!!!
Gemeinsam kommt man auf die besten Lösungen, auf jeden Fall besser wie Aussagen "funktioniert nur zufällig wegen unterschiedlichen Spaltenbreiten" !
Schönen Sonntag und noch viele Excel-Probleme, damit wir auch morgen wieder etwas zu tun haben :-)
Alex
Anzeige
AW: Danke an Rainer
08.02.2004 19:40:13
K.Rola
Hallo,
entschuldige, dass ich mich dazu geäußert habe, wird nicht wieder vorkommen.
Gruß K.Rola
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Text in Zelle prüfen: So geht's in Excel


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul erstellen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Code einfügen: Kopiere den folgenden VBA-Code und füge ihn in das neue Modul ein:

    Public Sub ZellBreite()
        Dim rng As Range
        Dim n As Integer
        Dim tmpWidth As Double
    
        With ActiveSheet.Range("IV1")
            Set rng = ActiveSheet.Range("A1")
            .Value = "Telefontarifauskunft von der Quantum Software GmbH"
            .Columns.AutoFit
    
            If rng.Width < .Width Then
                tmpWidth = 0
                n = 0
                Do Until tmpWidth > .Width
                    If rng.Offset(0, n) <> "" Then
                        MsgBox "Text kann nicht eingefügt werden, weil in Spalte " & Columns(n + 1).Address & " Text vorhanden ist."
                        Exit Sub
                    End If
                    tmpWidth = tmpWidth + rng.Offset(0, n).Width
                    n = n + 1
                Loop
                ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, n)).Merge
            End If
            rng.Value = .Value
        End With
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus. Du kannst dies über Entwicklertools > Makros tun.


Häufige Fehler und Lösungen

  • Fehler: „Text kann nicht eingefügt werden“
    Dies passiert, wenn in einer der benachbarten Zellen bereits Text steht. Stelle sicher, dass die Zellen leer sind, bevor du das Makro ausführst.

  • Fehler: Zelle zu klein für Text
    Überprüfe die Zellbreiten. Manchmal ist die Spaltenbreite nicht ausreichend für den Text. Du kannst die Spalten automatisch anpassen lassen, indem du .Columns.AutoFit verwendest.


Alternative Methoden

Eine Möglichkeit, die Excel-Funktion LEN zu verwenden, um die Länge des Textes zu prüfen, könnte in Kombination mit IF-Funktionen hilfreich sein. Beispielsweise:

=IF(LEN(A1) > 20, "Text zu lang", "Text passt")

Diese Methode eignet sich, wenn du nur die Zeichenanzahl prüfen möchtest, ohne die tatsächliche Breite des Textes zu berücksichtigen.


Praktische Beispiele

  • Beispiel 1: Prüfen, ob Text in Zelle passt und Zellen verbinden

    • Du hast einen langen Text in Zelle A1. Mit dem obigen Makro wird überprüft, ob der Text in die Zelle passt. Wenn nicht, werden die Zellen rechts verbunden.
  • Beispiel 2: Automatische Anpassung der Zellbreite

    • Verwende .Columns.AutoFit, um die Breite der Zellen automatisch an den Inhalt anzupassen, bevor du den Text eingibst.

Tipps für Profis

  • Kombiniere Formeln mit VBA: Du kannst die Ergebnisse von Formeln in VBA verwenden, um komplexere Prüfungen durchzuführen. Das ermöglicht es dir, effizienter zu arbeiten.

  • Nutze benutzerdefinierte Funktionen: Du kannst benutzerdefinierte Funktionen erstellen, um spezifische Prüfungen durchzuführen, z.B. ob ein bestimmter Text in einer Zelle vorkommt.


FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob Text in Zelle A1 passt?
Nutze das bereitgestellte Makro, um die Breite der Zelle und des Textes zu vergleichen.

2. Was passiert, wenn die Nachbarzelle nicht leer ist?
Das Makro gibt eine Fehlermeldung aus und verhindert das Einfügen des Textes, um Datenverlust zu vermeiden.

3. Kann ich die Funktion auch für andere Zellen verwenden?
Ja, du kannst die Zellreferenzen im VBA-Code anpassen, um das Makro für andere Zellen zu verwenden.

4. Gibt es eine Möglichkeit, die Zellen automatisch zu verbinden?
Ja, das Makro verbindet die Zellen automatisch, wenn der Text nicht in die angegebene Zelle passt.

5. Wie kann ich den Text in der Zelle testen?
Du kannst den Text mit dem Makro oder durch manuelle Eingabe und Überprüfung testen.

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