Microsoft Excel

Herbers Excel/VBA-Archiv

Fettdruck 1. Zeile bei mehrzeiliger Zelle

Betrifft: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Horst_H
Geschrieben am: 12.08.2008 11:05:02

Hallo,

Frage: Wie stelle ich es an, in einer erstellten, mehrzeiligen Zelle die Zeichenlänge der ersten Zellzeile auszulesen, um diese dann in Fettschrift zu bekommen. Nur die 1. Zeile in der Zelle. Voran ging der threat https://www.herber.de/forum/messages/1000905.html
, den ich dann soweit abänderte. Leider funktioniert die Schriftformatierung der 1. Zeile nicht, weil der 1. Zellinhalt in Spalte C vor Mehrzeilenerstellung variable ausgezählt werden müsste und dann diese Zeichenanzahl bei der Formatierung übergeben werden müsste, um daraufhin die genaue Zeichenanzahl der 1. Zeile passgenau fjür jede Zelle übergeben zu können. . Da viele Listen, die sich monatlich ändern, ist Handarbeit unmöglich. Wie mache ich das? Wer weiß weiter? Danke für jeden Tipp/Hilfe!! + Gruß, Horst_H

Datei:

https://www.herber.de/bbs/user/54535.xls


Sub UmbrZeilen2()
   Dim rng As Range

   For Each rng In Range(Cells(3, 3), Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3))
      rng = rng & IIf(IsNull(rng.Offset(, 5)), "", vbLf & "     [1] " & rng.Offset(, 5)) & _
                  IIf(IsNull(rng.Offset(, 6)), "", vbLf & "     [2] " & rng.Offset(, 6))

'Format der 1. Zeile in der Zelle
      
With ActiveCell.Characters(Start:=1, Length:=20).Font  ' müsste variable vorher ausgelesen und   _
_
berücksichtigt werden
        .Name = "Arial"
        .FontStyle = "Fett"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
      
      
      rng.Offset(, 5).Resize(, 2).ClearContents
   Next rng
End Sub


  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Daniel
Geschrieben am: 12.08.2008 11:22:15

Hi

der Zeilenumbruch ist ein ASCII-Zeichen innerhalb des Strings, daher kannst du seine Postion mit der INSTR-Funktion herausfinden:

= InStr(ActiveCell.Value, Chr(10)
oder
= InStr(ActiveCell.Value, vbLF)

gibt es innerhalb der Zelle keinen Zeilenumbruch, so ist das ergebnis der INSTR-Funktion 0
Es können auf diese Weise nur erzwungene Zeilenumbrüche gefunden werden, aber keine, die erfolgen weil die Zelle zu schmal ist.
Gruß,Daniel


  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Horst_H
Geschrieben am: 12.08.2008 12:13:28

Halo Daniel,

danke. Probiere, ob ich es hinbekomme.

Gruß, Horst_H


  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Horst_H
Geschrieben am: 12.08.2008 14:22:56

Halo Daniel,

ich bekomme das nicht hin. Habe Pos1 = InStr(ActiveCell.Value, Chr(10)) und dan nach den IFF mit eingebunden - ist falsch. Kannst du mir bitte an dieser Stelle noch helfen. Danke! + Gruß, Horst_H


  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Daniel
Geschrieben am: 12.08.2008 14:47:41

Hi

in dem Code darfst du nicht mit ActiveCell arbeiten.
die aktuelle Zelle, die bearbeitet wird, steht in der Variablen "rng".
diese musst du anstelle von "ActiveCell" benutzen, dann müsste es gehen.

Gruß, Daniel


  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Horst_H
Geschrieben am: 12.08.2008 14:57:30

Hi Daniel,

meine Versuche scheitern - was denke ich denn verkehrt? Danke+Gruß, Horst_H:

Sub UmbrZeilen2()
   Dim rng As Range
'   Dim Pos1 As Variant
'Pos1 = InStr(ActiveCell.Value, Chr(10))


   For Each rng In Range(Cells(3, 3), Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3))
      rng = rng & IIf(IsNull(rng.Offset(, 5)), "", vbLf & "     [1] " & rng.Offset(, 5)) & _
                  IIf(IsNull(rng.Offset(, 6)), "", vbLf & "     [2] " & rng.Offset(, 6))

'Pos1 = InStr(rng.Value, vbLf)

'Pos1 = InStr(rng.Value, Chr(10))

With ActiveCell.Characters(Start:=1, Length:=InStr(rng.Value, vbLf)).Font  ' müsste variable  _
vorher ausgelesen und berücksichtigt werden
        .Name = "Arial"
        .FontStyle = "Fett"
        .Size = 10
'        .Strikethrough = False
'        .Superscript = False
'        .Subscript = False
'        .OutlineFont = False
'        .Shadow = False
'        .Underline = xlUnderlineStyleNone
'        .ColorIndex = xlAutomatic
    End With
'
'      rng.Offset(, 5).Resize(, 2).ClearContents
   Next rng
End Sub




  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Daniel
Geschrieben am: 12.08.2008 14:59:59

Hi
ich sagte, du musst ActiveCell durch rng ersetzen.
damit meinte ich ALLE ActiveCell im Code.

Gruß, Daniel


  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Horst_H
Geschrieben am: 12.08.2008 15:05:12

Danke für die Schelte - hab's jetzt kapiert und Danke! Funktioniert 1A. Gruß, Horst_H


  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Daniel
Geschrieben am: 12.08.2008 15:09:00

HI
wo habe ich da gescholten?
ich habe nur meine Anweisung etwas präzisiert.

btw:
Variablen bitte immer korrekt dimensonieren.
InStr gibt als ergebnis eine Ganzzahl zurück, also muss POS1 als INTEGER oder LONG dimensioniert werden.

(integer deckt den Zahlenbereich bis c.a. 32.000 ab, long bis c.a 2 Mrd)

und bitte immer mit Option Explicit arbeiten, um Tipfehler bei Variablennamen auszuschließen
guckst du hier:

http://www.online-excel.de/excel/singsel_vba.php?f=4

Gruß, Daniel


  

Betrifft: AW: Fettdruck 1. Zeile bei mehrzeiliger Zelle von: Horst_H
Geschrieben am: 12.08.2008 15:20:10

sorry, dass ich noch einmal poste - war mehr spaßig gemeint, so nach dem Motto: Augen auf, dann wär das nicht passiert. Danke für deine tolle Unterstützung!!
Gruß, Horst_H


 

Beiträge aus den Excel-Beispielen zum Thema "Fettdruck 1. Zeile bei mehrzeiliger Zelle"