Вопрос:
У меня есть таблица с ячейками в столбце A, содержащая цвета в их формате HEX. Можно ли автоматически заполнить соседнюю ячейку цветом, соответствующим значению HEX?
Из исследования, проведенного до сих пор, я понимаю, что VBA должен сначала преобразовать строку HEX в корреспондент RGB, а затем заполнить цвет ячейки результатом.
Например: если A1 содержит значение “7fcac3” (или “# 7fcac3”, но я не думаю, что требуется фунт), VBA должен заполнить соседнюю B-ячейку RGB (127,202,195).
Ниже приведен пример того, как может выглядеть VBA, найти (здесь). Проблема в том, что я получаю ошибку “Ошибка компиляции: недопустимая внешняя процедура” в Excel 2013.
For i = 1 To LastRow Sub SetHexColors() Dim i, LastRow LastRow = Range(«A» & Rows.Count).End(xlUp).Row For i = 1 To LastRow Cells(i, «B»).Interior.Color = HEXCOL2RGB(Cells(i, «A»)) Next End Sub Public Function HEXCOL2RGB(ByVal HexColor As String) As String Dim Red As String, Green As String, Blue As String HexColor = Replace(HexColor, «#», «») Red = Val(«&H» & Mid(HexColor, 1, 2)) Green = Val(«&H» & Mid(HexColor, 3, 2)) Blue = Val(«&H» & Mid(HexColor, 5, 2)) HEXCOL2RGB = RGB(Red, Green, Blue) End Function
Большое спасибо,
Матье
Лучший ответ:
Первая строка кода:
For i = 1 To LastRow
не находится внутри Sub или Function. Похоже, что это копия строки, которую вы уже имеете в Sub SetHexColors, поэтому я ожидаю, что вам просто нужно будет прокомментировать или удалить эту первую строку. Единственными строками кода, которые вы можете разместить вне Subs и Functions, являются объявления переменных и такие вещи, как операторы Option (например, Option Explicit)