Выделение текста с помощью VBA - PullRequest
0 голосов
/ 21 декабря 2018

Вот формула ячейки, которую я использую:

="Charge: "&(UPPER(AG343))&"    "&" Charging Staff: "&(AH343)&"    "&" Charging Staff: "&(AI343)&"    "&" CAP_ID: "&(AJ343)

Есть ли способ в VBA распознать, что значение вытягивается в Cell "A" из ссылки на Cell "B", и сделатьтекстовое представление ссылки из Cell "B" в Cell "A" полужирный?

Я видел сообщения на эту тему об ограничениях функций Excel для манипулирования текстом.Я не понимаю, почему я могу использовать функцию UPPER для результатов ссылки на ячейку или для текста в целом в формуле ячейки, но не могу выделять текст в формуле жирным шрифтом.

Есть лиспособ в VBA применить свойство Bold к тексту в ячейке?

Есть ли способ использовать свойство "ActiveCell.Characters" для ссылок на ячейки, чтобы получить жирный текст?

1 Ответ

0 голосов
/ 21 декабря 2018

Это невозможно с формулой, но с vba.

Sub test()
    Dim rng As Range
    Dim s As String
    Dim s1 As String, s2 As String, s3 As String
    Dim k1 As Integer, k2 As Integer, k3 As Integer
    Set rng = ActiveCell

    s1 = Range("AH343")
    s2 = Range("AI343")
    s3 = Range("Aj343")

    s = "Charging Staff: " & s1 & "    " & " Charging Staff: " & s2 & "    " & " CAP_ID: " & s3

    k1 = InStr(s, s1)
    k2 = InStr(s, s2)
    k3 = InStr(s, s3)
    rng = s
    With rng
        .Font.Bold = False
        .Characters(k1, Len(s1)).Font.Bold = True
        .Characters(k2, Len(s2)).Font.Bold = True
        .Characters(k3, Len(s3)).Font.Bold = True
    End With
End Sub

Это тот же код, использующий оператор for.

Sub test2()
    Dim rng As Range
    Dim s As String
    Dim vS As Variant, vK()
    Dim i As Integer
    Set rng = ActiveCell

    vS = Range("Ah343").Resize(1, 3)

    s = "Charging Staff: " & vS(1, 1) & "    " & " Charging Staff: " & vS(1, 2) & "    " & " CAP_ID: " & vS(1, 3)

    For i = 1 To UBound(vS, 2)
        ReDim Preserve vK(1 To i)
        vK(i) = InStr(s, vS(1, i))
    Next i
    rng = s
    With rng
        .Font.Bold = False
        For i = 1 To 3
            .Characters(vK(i), Len(vS(1, i))).Font.Bold = True
        Next i
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...