Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
376to380
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
376to380
376to380
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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
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
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

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige