Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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
Excel_Kommentar_Text suchen und formatieren
20.09.2018 15:19:36
Oliver
Hallo,
es sind auf einem Tabellenblatt in verschiedenen Zellen via VBA Kommentarfelder angelegt worden. Diese Kommentarfelder sind alle gleich aufgebaut:
Beschreibung: (hier folgt ein beliebiger Text mit beliebiger Länge)
Modifikation: (hier folgt ein beliebiger Text mit beliebiger Länge)
Teile / Generationsstand: (hier folgt ein beliebiger Text mit beliebiger Länge)
Teile erhalten am: (hier folgt ein beliebiger Text mit beliebiger Länge)
Teilenummer: (hier folgt ein beliebiger Text mit beliebiger Länge)
Zeichnungsstand: (hier folgt ein beliebiger Text mit beliebiger Länge)
Geometriestand: (hier folgt ein beliebiger Text mit beliebiger Länge)
Lieferant: (hier folgt ein beliebiger Text mit beliebiger Länge)
Werkstoff: (hier folgt ein beliebiger Text mit beliebiger Länge)
Ich möchte, dass der Text jeweils vor dem „:“ immer „Fett“ dargestellt wird und der Text dahinter „Normal“. Die Zeilen stehen durch ein „Enter“ bzw. Chr(10) untereinander.
Aktuell kann ich den ganzen Text im Kommentar „fett“ oder in „normaler“ Schriftstärke darstellen. Mit dem folgenden Bereich:
With Sheets("Inhalt").Cells(i, s)
If Not .Comment Is Nothing Then .Comment.Delete
.AddComment
With .Comment
.Visible = False
.text text:= _
Sheets(Tabelle.Name).Cells(2, 2) & ": " & Sheets(Tabelle.Name).Cells(t, 2) & Chr(10) & _
Sheets(Tabelle.Name).Cells(2, 3) & ": " & Sheets(Tabelle.Name).Cells(t, 3) & Chr(10) & _
Sheets(Tabelle.Name).Cells(2, 4) & ": " & Sheets(Tabelle.Name).Cells(t, 4) & Chr(10) & _
Sheets(Tabelle.Name).Cells(2, 5) & ": " & Sheets(Tabelle.Name).Cells(t, 5) & Chr(10) & _
Sheets(Tabelle.Name).Cells(2, 6) & ": " & Sheets(Tabelle.Name).Cells(t, 6) & Chr(10) & _
Sheets(Tabelle.Name).Cells(2, 7) & ": " & Sheets(Tabelle.Name).Cells(t, 7) & Chr(10) & _
Sheets(Tabelle.Name).Cells(2, 8) & ": " & Sheets(Tabelle.Name).Cells(t, 8) & Chr(10) & _
Sheets(Tabelle.Name).Cells(2, 9) & ": " & Sheets(Tabelle.Name).Cells(t, 9) & Chr(10) & _
Sheets(Tabelle.Name).Cells(2, 10) & ": " & Sheets(Tabelle.Name).Cells(t, 10)
.Shape.DrawingObject.Font.FontStyle = "Normal"
.Shape.DrawingObject.Font.Size = 8
.Shape.DrawingObject.Font.Name = "Arial"
.Shape.TextFrame.AutoSize = True
End With
End With
Gibt es eine Möglichkeit z.B. über ein Array die Textbausteine „Beschreibung:“, „Modifikation:“, „Teile / Generationsstand:“ usw. im Kommentarfeld zu suchen und dann nacheinander "fett" zu formatieren?
Vielen Dank vorab für Eure Hilfe.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .Character
20.09.2018 15:32:44
Fennek
Hallo,
versuche es mit der genannten Funktion, also zuerst die Position des vbcrlf und des ":" bestimmen und dann .Character(von, bis).bold = true
Könnte etwas mühsam werden ...
mfg
AW: .Character
20.09.2018 15:39:47
Oliver
Hallo Fennek,
leider habe ich nicht ganz verstanden wie Deine Lösung einzeln für die Zeilen anzuwenden ist.
Kannst Du bitte ein Beispiel für zwei Zeilen angeben.
Danke.
Gruß
Oliver
AW: unsachliche Anwort
20.09.2018 16:20:35
Fennek
Hallo,
der Zugriff auf die Formatierung einzelner Buchstaben geht mit:

with Range("A1").comment
.Shape.TextFrame.Characters(anfang, anzahl).Font.Bold= true
end with
Mach was damit.
mfg
Anzeige
AW: unsachliche Anwort
20.09.2018 16:45:00
Oliver
Hallo,
danke für die Info. Wie bestimme ich aber damit den Anfang der 2, 3, 4 usw. Zeile im Kommentarfeld bei unterschiedlichen Zeichenlängen pro Zeile im Kommentarfeld?
Wie kann ich den jeweiligen Zeilenanfang in dem Kommentarfeld finden?
Gruß
AW: unsachliche Anwort
20.09.2018 16:58:29
Zwenn
Hi Oliver,
mit der Funktion instr() kannst bekommst Du den Index des ersten Zeichens deines Suchstrings in einem längeren String zurück geliefert:
http://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/instr-function?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dde-DE%26k%3Dk(vblr6.chm1008946)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue
Mit der Funktion len() bekommst Du die Länge eines Strings zurück geliefert.
Ich gehe mal davon aus, dass deine fett zu schreibenden Begriffe in Deinem sonstigen Text nicht noch einmal vorkommen, auf jeden Fall nicht mit dem Doppelpunkt dahinter. Dann müsstest Du Fenneks Code so erweitern, um z.B. Teilenummer: im Kommentar in Zelle A1 fett darzustellen (ungetestet):

with Range("A1").comment
anfang = instr(1, .Text, "Teilenummer:")
anzahl = len("Teilenummer:")
.Shape.TextFrame.Characters(anfang, anzahl).Font.Bold= true
end with

Viele Grüße,
Zwenn
Anzeige
AW: Trauma
20.09.2018 17:10:33
Fennek
@Zwenn,
seitdem mich im Kindergarten die Frau wegen einer schlechten Zeichnung angemeckert hat, habe ich ein "Kunstlehrer-Trauma",dass auch auf "schöne" Formatierungen abfärbt (+ "nice-to-have").
Der Fragesteller braucht aber noch einer Schleife, die abwechselnd nach ":" und vbcrlf sucht. Aber irgendetwas muss er ja auch können.
mfg
AW: Excel_Kommentar_Text suchen und formatieren
20.09.2018 19:25:15
Sepp
Hallo Oliver,
ungetestet!
  Dim lngStart As Long, lngEnd As Long
  
  With Sheets("Inhalt").Cells(i, s)
    If Not .Comment Is Nothing Then .Comment.Delete
    .AddComment
    With .Comment
      .Visible = False
      .Text Text:= _
        Sheets(Tabelle.Name).Cells(2, 2) & ": " & Sheets(Tabelle.Name).Cells(t, 2) & Chr(10) & _
        Sheets(Tabelle.Name).Cells(2, 3) & ": " & Sheets(Tabelle.Name).Cells(t, 3) & Chr(10) & _
        Sheets(Tabelle.Name).Cells(2, 4) & ": " & Sheets(Tabelle.Name).Cells(t, 4) & Chr(10) & _
        Sheets(Tabelle.Name).Cells(2, 5) & ": " & Sheets(Tabelle.Name).Cells(t, 5) & Chr(10) & _
        Sheets(Tabelle.Name).Cells(2, 6) & ": " & Sheets(Tabelle.Name).Cells(t, 6) & Chr(10) & _
        Sheets(Tabelle.Name).Cells(2, 7) & ": " & Sheets(Tabelle.Name).Cells(t, 7) & Chr(10) & _
        Sheets(Tabelle.Name).Cells(2, 8) & ": " & Sheets(Tabelle.Name).Cells(t, 8) & Chr(10) & _
        Sheets(Tabelle.Name).Cells(2, 9) & ": " & Sheets(Tabelle.Name).Cells(t, 9) & Chr(10) & _
        Sheets(Tabelle.Name).Cells(2, 10) & ": " & Sheets(Tabelle.Name).Cells(t, 10)
      .Shape.DrawingObject.Font.FontStyle = "Normal"
      .Shape.DrawingObject.Font.Size = 8
      .Shape.DrawingObject.Font.Name = "Arial"
      .Shape.TextFrame.AutoSize = True
      Do
        lngStart = lngStart + 1: lngEnd = InStr(lngStart, .Text, ":")
        If lngEnd > 0 And lngEnd > lngStart Then
          .Characters(lngStart, lngStart + lngEnd).Font.Bold = True
        End If
        lngStart = InStr(lngEnd, .Text, Chr(10))
      Loop While lngStart > 0
    End With
  End With

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Excel_Kommentar_Text suchen und formatieren
21.09.2018 14:16:41
Oliver
Hallo Sepp,
danke für Deinen Code.
Leider steigt dieser bei
.Characters(lngStart, lngStart + lngStart + lngEnd).Font.Bold = True
mit der Meldung: "Laufzeutfehler 438: Dieser Objekt untertützt diese Eigenschaft der Methode nicht" aus.
Ich habe darauf hin die Zeile
.Characters(lngStart, lngStart + lngStart + lngEnd).Font.Bold = True
in
.Shape.DrawingObject.Characters(lngStart, lngStart + lngEnd).Font.Bold = True
umbenannt.
Leider wird hier nur für die erste Zeile im Kommentar alles richtig formatiert. Die anderen Zeilen sind dann alle Fett geschrieben.
Woran kann das liegen, die Werte lngStart und lngEnd sind jeweils richtig.
Danke.
Anzeige
AW: Excel_Kommentar_Text suchen und formatieren
21.09.2018 19:12:05
Sepp
Hallo Oliver,
probier maql
.TextFrame.Characters(lngStart, lngStart + lngEnd).Font.Bold = True
ansonsten lade eine kleine Beispieldatei hoch.
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Excel_Kommentar_Text suchen und formatieren
25.09.2018 13:10:08
Oliver
Hallo Sepp,
danke für Deien Antwort. Wenn ich die Zeile einsetzte bekomme ich leider den Fehler:
"Laufzeitfehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht"
Anbei meine Beispieldatei: https://www.herber.de/bbs/user/124204.xlsm
Danke und Gruß
Oliver
AW: Excel_Kommentar_Text suchen und formatieren
25.09.2018 19:38:38
Sepp
Hallo Oliver,
                    Do
                      lngStart = lngStart + 1: lngEnd = InStr(lngStart, .text, ":")
                      If lngEnd > 0 And lngEnd > lngStart Then
                        .Shape.TextFrame.Characters(lngStart, lngEnd - lngStart + 1).Font.Bold = True
                      End If
                      lngStart = InStr(lngEnd, .text, Chr(10))
                    Loop While lngStart > 0

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
Drucker
25.09.2018 19:42:08
VW
\ \ v w a g w o q 0 0 p 0 2 . w o b . v w . v w g \ P r i n
AW: Excel_Kommentar_Text suchen und formatieren
26.09.2018 10:34:57
Oliver
Hallo Sepp,
danke jetzt funktioniert es.
Gruß

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige