9

次のようなエントリを含むExcelセルがあります。

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

セルの内容は、同じセル内の複数の行に表示されます。すべてのエントリで「名前」のみを太字にしたいと考えています。マクロを記録しましたが、解決策は次のようになるはずです。

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

私が知らないのは、開始値と各エントリの長さを取得する方法です。誰でもアイデアを得ましたか?

4

3 に答える 3

14

今すぐ入手:

lngPos = InStr(ActiveCell.Value, "/")
With ActiveCell.Characters(Start:=1, Length:=lngPos - 1).Font
    .FontStyle = "Bold"
End With
于 2012-04-24T10:01:48.657 に答える
0

上記の答えはまったく問題ありません。関連しているので、妻のマクロの書式設定の問題を解決するために書いた同様のルーチンを含めたいと思いました。

彼女の状況では、文字列を統合し、連結を vbCrLf (Chr(10)) で区切られた単一のセルに書き込んで、最終出力で次のように表示されます。

カテゴリ番号 1:
カテゴリ # 2:
カテゴリ 3:

各カテゴリの長さは異なり、カテゴリの数はセルごとに異なる場合があります。貼り付けられたサブルーチンはうまく機能しました

Sub BoldCategory() 
RowCount = ActiveSheet.UsedRange.Rows.Count
Set MyRange = ActiveSheet.Range(Cells(2, 1), Cells(RowCount, 1))
For Each Cell In MyRange
    i = 1
    LineBreak = 1
    Do While LineBreak <> 0
        EndBoldPoint = InStr(i, Cell.Value, ":") + 1
        BoldLength = EndBoldPoint - i
        Cell.Characters(Start:=i, Length:=BoldLength).Font.FontStyle = "Bold"
        LineBreak = InStr(i, Cell.Value, Chr(10))
        i = LineBreak + 1
    Loop
Next Cell
End Sub

したがって、「:」は、終点を取得するためにキー入力していた文字です。Chr(10) は、1 行が終了して次の行が開始されたときに教えてくれました。最後の行に到達すると、instr は 0 を返したため、while ループは終了します。

于 2021-07-16T19:37:50.283 に答える