Ich habe eine Frage:
Wie kann ich mittles VBA in einer Zelle mit Zeilenumbruch die Anzahl der Zeilen zählen?
Grüße
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:
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:
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 |
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
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