excel vba:使string粗体的一部分

我有excel包含这样的条目的单元格:

name/A/date name/B/date name/C/date 

单元格内容显示在同一单元格的多行上。 我想只为所有参赛作品“大胆”。 我logging了一个macros,我认为解决scheme必须是这样的:

 ActiveCell.FormulaR1C1 = "name/A/date" & Chr(10) & "name/B/date" & Chr(10) & "name/C/date" With ActiveCell.Characters(Start:=25, Length:=4).Font .FontStyle = "Bold" End With 

我不知道如何获得每个条目的起始值和长度。 任何人有一个想法?

现在拥有:

 lngPos = InStr(ActiveCell.Value, "/") With ActiveCell.Characters(Start:=1, Length:=lngPos - 1).Font .FontStyle = "Bold" End With 

受到过去几天的各种研究的启发:

 Dim totalVals, startPos(), endPos(), i, j, strLen As Long Dim currLine As String ' Split the cell value (a string) in lines of text splitVals = Split(ActiveCell.Value, Chr(10)) ' This is how many lines you have totalVals = UBound(splitVals) ' For each line, you'll have a character where you want the string to start being BOLD ReDim startPos(0 To totalVals) ' And one character where you'll want it to stop ReDim endPos(0 To totalVals) ' The value of the current line (before we loop on ActiveCell.Value) is empty currLine = "" For i = 0 To totalVals ' For each line... ' Length of the string currently treated by our code : 0 if no treatment yet... strLen = Len(currLine) ' Here we parse and rewrite the current ActiveCell.Value, line by line, in a string currLine = currLine & IIf(currLine = "", "", Chr(10)) & splitVals(i) ' At each step (= each line), we define the start position of the bold part ' Here, it is the 1st character of the new line, ie strLen + 1 startPos(i) = strLen + 1 ' At each step (= each line), we define the end position of the bold part ' Here, it is just before the 1st "/" in the current line (hence we start from strLen) endPos(i) = InStr(IIf(strLen = 0, 1, strLen), currLine, "/") Next i ' Then we use the calculated positions to get the characters in bold For j = 0 To UBound(startPos) ActiveCell.Characters(startPos(j), endPos(j) - startPos(j)).Font.FontStyle = "Bold" Next j 

这可能有点过头了,但是我已经testing过了,它像一个魅力。 希望这可以帮助!

    Interesting Posts