Как вариант, написать функцию, переводящую текс в Long.
Код
Sub test()
ActiveCell.Interior.Color = myRGB("RGB(255, 200, 200)")
End Sub
Function myRGB(RGBtext As String) As Long
Dim arr As Variant
arr = myRGBarray(RGBtext)
If Not IsEmpty(arr) Then
myRGB = RGB(arr(0), arr(1), arr(2))
End If
End Function
Function myRGBarray(ByVal RGBtext As String) As Variant
If RGBtext Like "RGB(*, *, *)" Then
RGBtext = Mid(RGBtext, Len("RGB(1"))
RGBtext = Left(RGBtext, Len(RGBtext) - 1)
myRGBarray = Split(RGBtext, ", ")
End If
End Function
If RGBtext Like "RGB(*, *, *)" Then
RGBtext = Mid(RGBtext, Len("RGB(1"))
RGBtext = Left(RGBtext, Len(RGBtext) - 1)
myRGBarray = Split(RGBtext, ", ")
End If
Подскажите, пожалуйста, зачем здесь RGBtext присваивается значение Mid(RGBtext, Len("RGB(1")), если следующей же строкой это значение стирается, и RGBtext присваивается новое значение: Left(RGBtext, Len(RGBtext) - 1)?
написал: Нельзя же одной переменной присвоить два значения?
а где там два значения? Там одно, но присваивается последовательно при выполнении пошаговых операций. Сначала получаем одно значение, его же используем далее и изменяем. И это не запрещено. Хотя бы пошагово выполните код - хоть какое-то понимание будет. А то пока выглядит как троллинг какой-то
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
написал: Почему ошибка? Нельзя же одной переменной присвоить два значения?
Ээээ... Выражение "i = i + 1" тоже вызывает ощущение, что переменной присваивают два значения? Вы лучше в C++ не заглядывайте, с их "i++" и "++i" вообще башню оторвёт.