Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1004to1008
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

Zeilen in Zellen zählen

Zeilen in Zellen zählen
29.08.2008 14:07:00
kai
Hallo
Ich habe eine Frage:
Wie kann ich mittles VBA in einer Zelle mit Zeilenumbruch die Anzahl der Zeilen zählen?
Grüße
Kai

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zeilen zählen in Zelle
29.08.2008 14:16:31
Backowe
Hi Kai,
VBA-Code:
Sub ZeilenZaehlen()
Dim i As Integer
Dim Summe As Integer
For i = 1 To Len(ActiveCell)
If Mid(ActiveCell, i, 1) = Chr(10) Then _
  Summe = Summe + 1
Next
MsgBox Summe + 1
End Sub
Gruß Jürgen
AW: Zeilen zählen in Zelle
kai

Hallo
Schöner Ansatz, die Zeilenumbrüche zu zählen. Bin ich nicht drauf gekommen.
Aber ich sehe, ich habe meine Frage unpräzise gestellt.
Die Zelle ist mit Format-Zeilenumbruch markiert. Somit sind keine CHR(10) vorhanden und das Makro gibt 1 aus.
Grüße und Danke für die schnelle Antwort
Kai
Dann ersetze mal chr(10) durch chr(13) oT
Backowe

AW: Zeilen zählen in Zelle
Jürgen

Hallo Kai,
wenn Du keinen manuellen Zeilenumbruch gesetzt hast, sehe ich nur die Möglichkeit, über die Höhe der Zelle und der Größe der Schrift die Anzahl der Zeilen zu errechnen, z.B. so:

Sub Zeilenzahl()
With ActiveCell
MsgBox "Zeilenzahl: " & (.Height / (.Font.Size * 1.275))
End With
End Sub


Der Faktor 1.275 berücksichtigt die Abstände über und unter dem Text - im Test hat sich der Faktor bewährt, ob bei anderen Schriftarten (getestet: Arial) andere Faktoren gelten, wäre zu testen.
Die Lösung funktioniert auch nur, wenn die Zeilenhöhe automatisch gesetzt wird. Zudem gibt sie nur zurück, wieviele Zeilen in die Zelle hineinpassen würden, aber nicht, wie viele enthalten sind, denn die maximale Zeilenhöhe könnte auch durch eine andere Zelle der Zeile bestimmt werden. Wurden in einer Zeile unterschiedliche Schriftgrößen verwendet, wird das Ergebnis noch ungenauer.
Nur aus Neugier: für welchen Zweck benötigst Du die Information?
Gruß, (ein anderer) Jürgen

AW: Zeilen zählen in Zelle
Kai

Hallo
Ich fülle auf einem Blatt eine Spielkarte aus. In der Zelle steht der Text der Aktion.
Auf einen Übersichtsblatt wähle ich eine Karte aus und setzte diese dann auf Position 1-9. Diese 9 Karten stehen auf einem anderen Blatt und werden von da ausgedruckt. Die Werte/Texte holen sich die Karten mit sverweis.
In dieser Zelle soll sich der Text automatisch an die Zellengröße anpassen. Die Größe der Zelle wird nicht geändert.
- mit verbundenen Zellen geht alles irgendwie nicht.
- Zellgröße automatisch anpassen verändert die Zellgröße
- Zeilenumbruch verändert die Schriftgröße nicht und der Text geht über die Unterkante der Zelle raus
- An Zellengröße anpassen macht keinen Zeilenumbruch
- Zeilenumbruch und anpassen geht nicht zusammen
- Textbox mit Zelle verbunden und Makro geht, aber nicht immer (warum?)
Ich denke, ich mache das per Makro so:
Range("N3").Copy Range("o5")
Columns("o:o").EntireColumn.AutoFit
breit = Columns("o").ColumnWidth
Mit der Breite kann ich die benötigte Zeilenanzahl ausrechnen und die Schriftgröße setzen.
Danke für die Hilfe und die Denkanstöße.
Grüße
Kai
AW: Zeilen zählen in Zelle
Jürgen

Hallo Kai,
wenn ich es richtig verstehe, benötigst Du so etwas wie eine automatische Anpassung der Schriftgröße, um den Text in die Karten einzupassen. Wie wär es mit der Idee, nach dem Aktualisieren der Texte in den Karten die Anpasung mit einem Code wie dem folgenden vorzunehmen. Annahmen für den Code: die Schriftgröße soll maximal 20 Punkt beträgt, die genaue Zeilenhöhe der Karten 50 Punkt, die Karten stehen auf dem zweiten Arbeitsblatt in B1 bis B9:

Sub GroesseAnpassen()
Dim Bereich As Range
Dim ZeilenHoehe As Double 'Gewünschte Zeilenhöhe in Punkten
ZeilenHoehe = 50
Set Bereich = Sheets(2).Range("b1:b9")
Bereich.Font.Size = 20
Bereich.Rows.AutoFit
Do Until Bereich.Cells(1).Height 


Die Idee: man setzt die Schriftgröße auf den Maximalwert, reduziert sie anschießend solange, bis die Zeilenhöhe dem gewünschten Wert entspricht bzw. leicht unterschreitet, und setzt (erhöht) zum Schluß die Zeilenhöhe genau auf den gewünschten Wert, weil durch das AutoFit die Zeilenhöhe darunter gefallen sein kann (wäre z.B. auch der Fall, wenn der Text kurz ist und somit schon bei maximaler Schriftgröße die Karte nicht ausfüllt).
Ich hoffe, das hilft Dir weiter.
Gruß, Jürgen

Ein kleines Beispiel!
Backowe
AW: Ein kleines Beispiel!
Kai

Hallo Jürgen.
Die Zelle ist mit Zeilenumbruch markiert.
Die Zelle holt sich den Text mit sverweis.
Mit dieser Formatierung bricht Excel den Text ohne Chr(10) oder Chr(13) um. Leider.
Grüße
Kai
Diese "nebensächliche Information" hätte ...
Backowe

Hi Kai,
... eigentlich in Dein Erstposting gehört, daß der Zellwert über eine Formel zustande kommt, dann hätte ich mir meine Antwort verkniffen! ;o)
Gruß Jürgen
Anzeige
AW: Zeilen zählen in Zelle
29.08.2008 14:27:36
kai
Hallo
Schöner Ansatz, die Zeilenumbrüche zu zählen. Bin ich nicht drauf gekommen.
Aber ich sehe, ich habe meine Frage unpräzise gestellt.
Die Zelle ist mit Format-Zeilenumbruch markiert. Somit sind keine CHR(10) vorhanden und das Makro gibt 1 aus.
Grüße und Danke für die schnelle Antwort
Kai
Dann ersetze mal chr(10) durch chr(13) oT
29.08.2008 14:42:00
Backowe
AW: Zeilen zählen in Zelle
29.08.2008 21:38:03
Jürgen
Hallo Kai,
wenn Du keinen manuellen Zeilenumbruch gesetzt hast, sehe ich nur die Möglichkeit, über die Höhe der Zelle und der Größe der Schrift die Anzahl der Zeilen zu errechnen, z.B. so:

Sub Zeilenzahl()
With ActiveCell
MsgBox "Zeilenzahl: " & (.Height / (.Font.Size * 1.275))
End With
End Sub


Der Faktor 1.275 berücksichtigt die Abstände über und unter dem Text - im Test hat sich der Faktor bewährt, ob bei anderen Schriftarten (getestet: Arial) andere Faktoren gelten, wäre zu testen.
Die Lösung funktioniert auch nur, wenn die Zeilenhöhe automatisch gesetzt wird. Zudem gibt sie nur zurück, wieviele Zeilen in die Zelle hineinpassen würden, aber nicht, wie viele enthalten sind, denn die maximale Zeilenhöhe könnte auch durch eine andere Zelle der Zeile bestimmt werden. Wurden in einer Zeile unterschiedliche Schriftgrößen verwendet, wird das Ergebnis noch ungenauer.
Nur aus Neugier: für welchen Zweck benötigst Du die Information?
Gruß, (ein anderer) Jürgen

Anzeige
AW: Zeilen zählen in Zelle
30.08.2008 12:04:06
Kai
Hallo
Ich fülle auf einem Blatt eine Spielkarte aus. In der Zelle steht der Text der Aktion.
Auf einen Übersichtsblatt wähle ich eine Karte aus und setzte diese dann auf Position 1-9. Diese 9 Karten stehen auf einem anderen Blatt und werden von da ausgedruckt. Die Werte/Texte holen sich die Karten mit sverweis.
In dieser Zelle soll sich der Text automatisch an die Zellengröße anpassen. Die Größe der Zelle wird nicht geändert.
- mit verbundenen Zellen geht alles irgendwie nicht.
- Zellgröße automatisch anpassen verändert die Zellgröße
- Zeilenumbruch verändert die Schriftgröße nicht und der Text geht über die Unterkante der Zelle raus
- An Zellengröße anpassen macht keinen Zeilenumbruch
- Zeilenumbruch und anpassen geht nicht zusammen
- Textbox mit Zelle verbunden und Makro geht, aber nicht immer (warum?)
Ich denke, ich mache das per Makro so:
Range("N3").Copy Range("o5")
Columns("o:o").EntireColumn.AutoFit
breit = Columns("o").ColumnWidth
Mit der Breite kann ich die benötigte Zeilenanzahl ausrechnen und die Schriftgröße setzen.
Danke für die Hilfe und die Denkanstöße.
Grüße
Kai
Anzeige
AW: Zeilen zählen in Zelle
31.08.2008 00:36:28
Jürgen
Hallo Kai,
wenn ich es richtig verstehe, benötigst Du so etwas wie eine automatische Anpassung der Schriftgröße, um den Text in die Karten einzupassen. Wie wär es mit der Idee, nach dem Aktualisieren der Texte in den Karten die Anpasung mit einem Code wie dem folgenden vorzunehmen. Annahmen für den Code: die Schriftgröße soll maximal 20 Punkt beträgt, die genaue Zeilenhöhe der Karten 50 Punkt, die Karten stehen auf dem zweiten Arbeitsblatt in B1 bis B9:

Sub GroesseAnpassen()
Dim Bereich As Range
Dim ZeilenHoehe As Double 'Gewünschte Zeilenhöhe in Punkten
ZeilenHoehe = 50
Set Bereich = Sheets(2).Range("b1:b9")
Bereich.Font.Size = 20
Bereich.Rows.AutoFit
Do Until Bereich.Cells(1).Height 


Die Idee: man setzt die Schriftgröße auf den Maximalwert, reduziert sie anschießend solange, bis die Zeilenhöhe dem gewünschten Wert entspricht bzw. leicht unterschreitet, und setzt (erhöht) zum Schluß die Zeilenhöhe genau auf den gewünschten Wert, weil durch das AutoFit die Zeilenhöhe darunter gefallen sein kann (wäre z.B. auch der Fall, wenn der Text kurz ist und somit schon bei maximaler Schriftgröße die Karte nicht ausfüllt).
Ich hoffe, das hilft Dir weiter.
Gruß, Jürgen

Anzeige
AW: Ein kleines Beispiel!
30.08.2008 12:06:55
Kai
Hallo Jürgen.
Die Zelle ist mit Zeilenumbruch markiert.
Die Zelle holt sich den Text mit sverweis.
Mit dieser Formatierung bricht Excel den Text ohne Chr(10) oder Chr(13) um. Leider.
Grüße
Kai
Diese "nebensächliche Information" hätte ...
30.08.2008 12:16:57
Backowe
Hi Kai,
... eigentlich in Dein Erstposting gehört, daß der Zellwert über eine Formel zustande kommt, dann hätte ich mir meine Antwort verkniffen! ;o)
Gruß Jürgen

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige