Как сделать миксер цветов в vba

По следующей ссылке представлен микшер цветов в HTML.

https://www.w3schools.com/colors/colors_mixer.asp

Я ищу код микшера цветов в vba.

Позвольте мне подвести итог тому, что я хочу.

Я введу #FF0000 (красный) и введу #0000FF (синий) в VBA. Тогда VBA выдаст мне номер #8c0073.

Пожалуйста, нажмите на следующую ссылку, чтобы увидеть, какой цвет я хочу получить.

Пожалуйста, нажмите здесь

Возможно, вам понадобится функция RGB, чтобы перестроить то, что вы называете микшером цветов. Например, #66FF99 — это RGB(102,255,153). Кроме того, совершенно непонятно, в чем ваша проблема? Что вы пробовали и где застряли? Как спросить

Storax 17.08.2024 18:31

Если вы хотите получить цвет #8C0073, просто используйте Selection.Interior.Color = RGB(140, 0, 115). Шестнадцатеричное обозначение #8C0073 преобразуется в значения RGB следующим образом: 8C в шестнадцатеричном формате равно 140 в десятичном виде, 00 равно 0 и 73 равно 115. С левой стороны значения указаны в шестнадцатеричном формате, а с правой стороны — в десятичном. , что и требуется для функции RGB.

Storax 17.08.2024 19:09

Было бы лучше отредактировать сообщение соответствующим образом. По крайней мере, из сообщения мне было неясно, что вы хотите получить значение между выбранными значениями. Не все будут читать комментарии.

Storax 17.08.2024 19:33
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
3
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, следующая функция поможет

Function GenerateGradient(color1 As String, color2 As String, steps As Integer) As String()
    Dim r1 As Long, g1 As Long, b1 As Long
    Dim r2 As Long, g2 As Long, b2 As Long
    Dim rStep As Double, gStep As Double, bStep As Double
    Dim i As Integer
    Dim r As Long, g As Long, b As Long
    Dim gradient() As String
    
    ' Convert color1 from hex to RGB
    r1 = CLng("&H" & Mid(color1, 2, 2))
    g1 = CLng("&H" & Mid(color1, 4, 2))
    b1 = CLng("&H" & Mid(color1, 6, 2))
    
    ' Convert color2 from hex to RGB
    r2 = CLng("&H" & Mid(color2, 2, 2))
    g2 = CLng("&H" & Mid(color2, 4, 2))
    b2 = CLng("&H" & Mid(color2, 6, 2))
    
    ' Calculate step increments
    rStep = (r2 - r1) / (steps - 1)
    gStep = (g2 - g1) / (steps - 1)
    bStep = (b2 - b1) / (steps - 1)
    
    ' Initialize the array to hold gradient values
    ReDim gradient(steps - 1)
    
    ' Generate the gradient
    For i = 0 To steps - 1
        r = r1 + rStep * i
        g = g1 + gStep * i
        b = b1 + bStep * i
        
        ' Convert RGB back to hex and store in the array
        gradient(i) = "#" & Right("00" & Hex(r), 2) & Right("00" & Hex(g), 2) & Right("00" & Hex(b), 2)
    Next i
    
    ' Return the gradient array
    GenerateGradient = gradient
End Function

Вы можете проверить это как

Sub GetMiddleColor()
    Dim gradient() As String
    Dim middleColor As String
    
    ' Generate 21 colors between Red and Blue
    gradient = GenerateGradient("#FF0000", "#0000FF", 21)
    
    ' Get the middle color (11th in the 21-element array, index 9 or 10)
    middleColor = gradient(9)
    Debug.Print middleColor
    ' Output the middle color
    MsgBox "Middle color in the gradient is: " & middleColor  ' Expected output: #8C0073
End Sub

Другие вопросы по теме