Причина очевидного изменения заключается в том, что функция RGB () фактически создает значение BGR.
В частности, красный байт - это младший байт, а синий - старший байт (или, по крайней мере, третий из четырех).
Попробуйте этот пример в окне Immediate:
x = RGB(255, 0, 128) ' full red, half blue
? hex(x)
8000FF
x = RGB(128, 0, 255) ' half red, full blue
? hex(x)
FF0080
Обратите внимание, что "полный" байт (255 или FF) и "наполовину полный" байт (128 или 80) заканчиваются на противоположных сторонах в каждом результате. Вот почему вам нужно указывать шестнадцатеричную константу в обратном порядке по сравнению с тем, что вы ожидаете получить то же значение.
Кроме того, нет необходимости использовать онлайн-конвертер. Функция Hex () предоставляет шестнадцатеричное значение заданного ей числа, а Int принимает строку в шестнадцатеричном формате и возвращает десятичное значение:
? Int("&hff0000")
16711680
Обновление:
Таким образом, чтобы использовать эту информацию для создания своих шестнадцатеричных констант, вы просто запускаете операторы RGB () и Hex () в окне Immediate, как описано выше (нажмите Ctrl + G, чтобы открыть и закрыть его), а затем используйте полученное значение Hex как ваша постоянная. Если значение меньше 6 цифр, вы можете заполнить его нулями слева, но это технически необязательно:
x = RGB(183, 222, 232)
? "Public Const MyBlue = &h" & hex(x)
Public Const MyBlue = &hE8DEB7
затем скопируйте эту последнюю строку в ваш код.