Цветная строка вместе со скобкой, если ее значение больше 0 в vba - PullRequest
0 голосов
/ 06 февраля 2020

С помощью приведенного ниже кода я пытаюсь раскрасить жало вместе с скобкой, когда его значение> 0. Но это не работает, как ожидалось. Цвет нанесен неправильно.

Sub sdasd()
    Dim LArray() As String
    Dim sss() As String
    For Each cell In Range("Z7:AB16")
    LArray = Split(cell.Value, "(")
    sss = Split(LArray(1), ")")
    sFind = sss(0)
    If sFind > 0 Then
        iLen = Len(sFind)
        IFind = InStr(cell.Value, sFind)
        cell.Characters(IFind, iLen).Font.Color = vbRed
    End If
    Next cell
End Sub

Другой подход, все еще не повезло

Sub sdasd()
Dim LArray() As String
Dim sss() As String
Dim st As Integer
For Each cell In Range("Z7:AB16")

Data = cell.Value
    LArray = Split(cell.Value, "(")
    sss = Split(LArray(1), ")")
    sFind = sss(0)
    If sFind > 0 Then
        iLen = Len(sFind)
        st = Len(Data) - (Len(LArray(1)) + 1)
        cell.Characters(st, iLen).Font.Color = vbRed
    End If
Next cell

End Sub

enter image description here

1 Ответ

1 голос
/ 06 февраля 2020

Проблемная строка c - IFind = InStr(cell.Value, sFind).

InStr находит first вхождение sFind, которое может быть не числом внутри скобок, а скорее более ранний экземпляр.

Хотя я бы подошел к этому иначе, можно легко исправить положение ( в качестве параметра start для InStr.

Dim pos as Long
pos = InStr(cell.Value, "(")
IFind = InStr(pos, cell.Value, sFind)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...