Страницы: 1
RSS
Как задать ColorIndex или Color
 
В теме "Линк - выделение" был оффтопный вопрос про цвет и очень простой (но тоже оффтопный) ответ.  
Чтобы не нарушать правила по поводу оффтопа, я создам лучше эту новую тему.  
Я, конечно, воспользовавшись "Поиском", нашел несколько разных "Палитр", но все они на мой взгляд сложноваты.    
Мне же требуется всего лишь таблица соответствия "Цвет" - "ColorIndex" - "Color", из которой я смогу скопировать значение требуемого параметра ColorIndex или Color, соответствующего необходимому мне цвету, чтобы вставить его в код программы, а не макрос в формой, из которой пользователь сможет выбирать цвета.  
 
{quote}{login=Юрий М}{date=06.02.2010 09:39}{thema=}{post}...выполните этот макрос. Номер строки будет соответствовать значению  ColorIndex:  
Sub IndexOfColor()  
  For i = 1 To 56  
     Cells(i, 1).Interior.ColorIndex = i  
  Next  
End Sub  
{/post}{/quote}  
Юрий, спасибо за такую простую и полезную идею (даже не пойму, как самому в голову не пришло...)  
Вот только иногда нужно задавать не .ColorIndex, а .Color в представлении RGB(0...255 , 0...255 , 0...255).    
Я ваш совет чуть-чуть модернизировал, но как вычислить соответствие .ColorIndex и .Color так и не понял...  
Наверное, нет смысла даже файл прикладывать...  
Вот что я попытался сделать:  
 
Sub Palitra()  
  ' удалить старые столбцы  
  Columns("A:C").Delete Shift:=xlToLeft  
  Dim i%, Red%, Green%, Blue%  
  ' заголовки столбцов в первой строке активного листа  
  Cells(1, 1).Value = "Цвет"  
  Cells(1, 2).Value = ".Interior.ColorIndex"  
  Cells(1, 3).Value = ".Interior.Color"  
  ' перебор цветов  
  For i = 1 To 56  
     Cells(i + 1, 1).Interior.ColorIndex = i  
     Cells(i + 1, 2).Value = i  
     ' а вот здесь по значению i нужно как-то вычислить переменные Red, Green, Blue  
     ' КАК ЭТО СДЕЛАТЬ?  
     Cells(i + 1, 3).Value = "RGB(" & Red & ", " & Green & ", " & Blue & ")"  
  Next  
End Sub
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 

В Excel 2003 56 предопределенных цветов. Пользователь может настроить для каждой книги индивидуальную палитру. ColorIndex указывает на предопределенный цвет, Color настраивает цвет для текущего индекса. Ниже мои попытки побыстрому настраивать приятные оттенки на доп палитре: <BR>http://www.planetaexcel.ru/docs/forum_upload/post_82503.zip

 

 
VovaK,    
спасибо за пример, но я его уже видел когда искал ответ на свой вопрос...  
Всё, конечно, очень здорово сделано, программа работает но:  
1. Мне всего-лишь нужно ВЫЧИСЛИТЬ .Color по заданному .ColorIndex.  
2. В коде вашей программы все параметры НЕ ВЫЧИСЛЯЮТСЯ, а просто ЗАДАНЫ в массивах (например, 56 значений ColorInd задаётся как Array(1, 53, 52, 51, 49, 11, ... или RColor = Array(153, 153, 255,... , ...), а соответствие их друг другу определяется переключающими функциями (например, ColorName = Choose(ColorInd, "Черный", "Белый",... или MatchUpColor = Switch(ColorName = "Черный", "&H000000&", ColorName = "Белый", "&HFFFFFF&",...)  
3. Я вообще не нашел (ну, если честно, то не слишком-то и долго ковырялся), как можно её переделать так, чтобы при выборе определенного цвета куда-то (например, в дополнительные текст-боксы на форме) выводились соответствующие выбору значения .Color и .ColorIndex  
 
The_Prist,  
может я конечно и "не догоняю", но несмотря на ваше утверждение: "На само деле RGB не что иное, как тот же ColorIndex. Выполните макрос и поймете." я ничего не понял, т.к. в приведенном макросе фигурирует только .Interior.Color и нет ни одного ColorIndex...  
 
Так что вопрос так и остаётся для меня открытым:    
как в приведенном в первом моём сообщении макросе Sub Palitra() вычислить .Color по заданному .ColorIndex?
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
К стати, The_Prist,  
а что за конструкция:  
Cells(i, 3) = VBA.RGB(0, 0, i), которая при, например i=1, возвращает в Cells(1, 3) значение 65536 ?  
Где вы такую откопали? Как её можно полезно поюзать? В справке по ВБА такой нет.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Vovak  
 
Понравился выбор цвета, добавил к себе.
 
{quote}{login=Alex_ST}{date=09.02.2010 09:23}{thema=}{post}К стати, The_Prist,  
а что за конструкция:  
Cells(i, 3) = VBA.RGB(0, 0, i), которая при, например i=1, возвращает в Cells(1, 3) значение 65536 ?  
Где вы такую откопали? Как её можно полезно поюзать? В справке по ВБА такой нет.{/post}{/quote}  
 
Есть такая наберите RGB Function в справке.
 
Если необходимо вычислить RGB, то это делается так:  
(фрагмент из файла Уокенбаха, пример здесь:  http://www.planetaexcel.ru/docs/forum_upload/post_74452.xls)  
     
  Dim HexDigits As String  
  Dim BluePart As Integer, GreenPart As Integer, RedPart As Integer  
   UserForm1.SampleLabel.BackColor = ColorButton.BackColor  
   HexDigits = Hex(ColorButton.BackColor)  
   Do Until Len(HexDigits) = 6  
       HexDigits = "0" & HexDigits 'pad with zeros  
   Loop  
   BluePart = Val("&h" & Left(HexDigits, 2))  
   GreenPart = Val("&h" & Mid(HexDigits, 3, 2))  
   RedPart = Val("&h" & Right(HexDigits, 2))  
   UserForm1.RGBLabel.Caption = RedPart & " " & GreenPart & " " & BluePart
 
Спасибо McCinly, приятно когда работа кому-то нравится.
 
{quote}{login=McCinly}{date=09.02.2010 09:48}{thema=Re: }{post}{quote}{login=Alex_ST}{date=09.02.2010 09:23}{thema=}{post}К стати, The_Prist,  
а что за конструкция:  
Cells(i, 3) = VBA.RGB(0, 0, i), которая при, например i=1, возвращает в Cells(1, 3) значение 65536 ?  
Где вы такую откопали? Как её можно полезно поюзать? В справке по ВБА такой нет.{/post}{/quote}  
 
Есть такая наберите RGB Function в справке.{/post}{/quote}  
Вообще-то я не про RGB, а про VBA спрашивал
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
+1  
Зачем VBA?  
И так работает:  
Cells(i, 3) = RGB(0, 0, i)
Bite my shiny metal ass!      
Страницы: 1
Читают тему
Наверх