Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/56: Рейтинг темы: голосов - 56, средняя оценка - 4.64
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
1

Вызов диалогового окна выбора цвета (Excel)

03.12.2011, 19:50. Просмотров 10476. Ответов 48
Метки нет (Все метки)

Как вызвать диалоговое окно выбора цвета и как получить из него значение для закраски ячейки? Или оно и так возвращает 8 битное значение в границах 0-56? Я ведь, как оказалось, не могу покрасить ячейку вот так
Visual Basic
1
Cells.Interior.ColorIndex = число
цветом, код которого выходит за граници 0 - 56.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 19:50
Ответы с готовыми решениями:

Вывод диалогового окна с запросом выбора файла и сохранение пути к файлу ?
Подскажите как реализуется чтобы в макросе выдать диалоговое окно с возможностью выбора файла и по...

Выполнение макроса внутри диалогового окна Excel
Доброго времени суток, уважаемые гуру! Подскажите, пожалуйста, можно ли запустить выполнение...

Открытие документа Word из Excel с использованием диалогового окна
Здравствуйте. Столкнулся с такой проблемой: не получается написать макрос который после запуска из...

Закрытие диалогового окна
Подскажите, пожалуйста, как назначить кнопке закрытие активного диалогового окна

Выбираем файлы из диалогового окна
Ну что то весь интернет обыскала и ничего не нашла подобного. Выбираю файлы нажимая на кнопку на...

48
Апострофф
Заблокирован
03.12.2011, 19:59 2
Цитата Сообщение от Gepar Посмотреть сообщение
Я ведь, как оказалось, не могу покрасить ячейку вот так
Код Visual Basic1 Cells.Interior.ColorIndex = число
цветом, код которого выходит за граници 0 - 56.
Кроме ColorIndex есть ещё и Color
Visual Basic
1
Cells.Interior.Color=rgb(0,255,0)
2
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
03.12.2011, 21:25  [ТС] 3
Тоесть я начал писать код, но я ведь не знаю константу для вызова диалогового окна с выбором цвета
Visual Basic
1
2
    Dim dlg As Dialog
    Set dlg = Dialogs(xlDialogВыборЦвета)
Естественно когда я искал диалоговое окно выбора шрифта это никак мне не подсказало какая константа будет в xl соответствовать окну выбора цвета.
0
Alex77755
10991 / 3447 / 593
Регистрация: 13.02.2009
Сообщений: 10,240
03.12.2011, 21:48 4
попробуй xlDialogPatterns
1
03.12.2011, 21:48
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
03.12.2011, 22:34  [ТС] 5
Цитата Сообщение от Alex77755 Посмотреть сообщение
попробуй xlDialogPatterns
Не определено говорит, не нашло в общем-то такой константы оно как я понимаю.
0
Alex77755
10991 / 3447 / 593
Регистрация: 13.02.2009
Сообщений: 10,240
04.12.2011, 00:07 6
Наверно у меня Ёксель неправильный...
Даже все 3. Проверял в 2003, 2007 и в 2010
0
Миниатюры
Вызов диалогового окна выбора цвета (Excel)  
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
04.12.2011, 00:11  [ТС] 7
Напечатал вручную (а не копипастил с форума) - заработало, чудеса да и только.
0
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
04.12.2011, 00:16  [ТС] 8
Только как я узнаю код выбранного цвета + я вообще изначально хотел окошко что есть если клацнуть по кнопке цвет заливки и выбрать там "другие цвета", какой код у него ?
0
Миниатюры
Вызов диалогового окна выбора цвета (Excel)  
Alex77755
10991 / 3447 / 593
Регистрация: 13.02.2009
Сообщений: 10,240
04.12.2011, 00:25 9
Напечатал вручную (а не копипастил с форума)
Можно не печатать и не копипастить:
Set dlg = Dialogs( после этого появляется список всех диалогов!! И выбрать(кликом мыша)
Если не появилось - можно нажать Ctrl+пробел

Добавлено через 5 минут
"другие цвета"
А что при выборе цвета заливки предоставляется такая возможность?
копать надо в сторону редактирование палитры
Можно использовать CommonDialog

Добавлено через 3 минуты
Да в 2010 есть, оказывается. Я просто с ним мало работаю - не нравится мне леночные ...
2
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
04.12.2011, 01:35  [ТС] 10
Цитата Сообщение от Alex77755 Посмотреть сообщение
Set dlg = Dialogs( после этого появляется список всех диалогов!! И выбрать(кликом мыша)
Их же всего больше 1000 (так по крайней мере написано в книге что я читал), кто его знает внесли ли нужное мне в этот список или нет, ведь он судя по всему не полный появляется когда я делаю как Вы написали.

Добавлено через 1 минуту
Но Вы напишите как хотя бы из того диалога что выше получить данные по выбору цвета, он ведь возвращает сам true если нажато ok и false если нажата отмена, а мне код цвета нужен обычный ну или в формате RGB.
0
Апострофф
Заблокирован
04.12.2011, 09:46 11
Цитата Сообщение от Gepar Посмотреть сообщение
а мне код цвета нужен обычный
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Option Explicit
Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As ChooseColor) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Type ChooseColor
  lStructSize As Long
  hwndOwner As Long
  hInstance As Long
  rgbResult As Long
  lpCustColors As String
  flags As Long
  lCustData As Long
  lpfnHook As Long
  lpTemplateName As String
End Type
 
Private Function ShowColor() As Long 'код выбранного цвета
Dim CustomColors As Long
Dim ChooseColorStructure As ChooseColor
  Dim Custcolor(16) As Long
  Dim lReturn As Long
  ChooseColorStructure.lStructSize = Len(ChooseColorStructure)
  ChooseColorStructure.hwndOwner = FindWindow("XLMAIN", Application.Caption)
  ChooseColorStructure.hInstance = 0
  ChooseColorStructure.lpCustColors = StrConv(CustomColors, vbUnicode)
  ChooseColorStructure.flags = 0
  If ChooseColor(ChooseColorStructure) <> 0 Then
    ShowColor = ChooseColorStructure.rgbResult
    CustomColors = StrConv(ChooseColorStructure.lpCustColors, vbFromUnicode)
  Else
    ShowColor = -1
  End If
End Function
 
Sub ColorTime()
Selection.Interior.Color = ShowColor
End Sub
1
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
04.12.2011, 13:24  [ТС] 12
Апострофф, а можно всё же прсто константу диалогового окна выбора цвета или хотя бы объяснить как из окна что было найдено на пред. странице получить код цвета, скопированный вами код откуда-то работает только на 32х битной windows, я не смогу отладить его и увидеть как он работает у себя да и слишком это как для маленькой лабораторной.
0
Alex77755
10991 / 3447 / 593
Регистрация: 13.02.2009
Сообщений: 10,240
04.12.2011, 13:41 13
Может такой вариант сгодится для лабы?
1
Вложения
Тип файла: rar Цвет.rar (10.7 Кб, 84 просмотров)
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
04.12.2011, 15:45  [ТС] 14
Цитата Сообщение от Alex77755 Посмотреть сообщение
Может такой вариант сгодится для лабы?
Вот мне бы такое же, только с перламутровыми пуговицами.
В общем-то не работает оно в 2010 офисе, в 2003 работает, а в 2010 - нет. Нужно что-то универсальное.
И всё же опять же таки повторюсь:
как здесь выдрать значение выбранного цвета:
Цитата Сообщение от Alex77755 Посмотреть сообщение
попробуй xlDialogPatterns
Хоть в ргб, хоть в виде числа от 1 до 56, ну хоть как-то.
0
Ципихович Эндрю
1414 / 324 / 28
Регистрация: 10.04.2009
Сообщений: 5,223
04.12.2011, 15:52 15
я так и не понял в чём проблема не знаете как обзывается нужный цвет?
магнитофон на запись
как в Экселе не знаю, но в цветах в Ворде и Экселе неужели по разному?
в конце концов кусочок текста выделяете и пишете циклом выделенное окрасить в цвет и от 1 до 999 чего нибудь да выудить можно если пошагово в Эф8
0
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
04.12.2011, 16:12  [ТС] 16
Ципихович Эндрю, я хочу диалоговое окно выбора цвета и получить из него код того цвета что был выбран.
0
Sasha_Smirnov
5496 / 1323 / 145
Регистрация: 08.02.2009
Сообщений: 4,042
Записей в блоге: 29
04.12.2011, 16:12 17
Visual Basic
1
Selection.Interior.Color = RGB(0, 255, 0)
(для зелёного; через запись команды "Формат ячеек")


Цитата Сообщение от Gepar Посмотреть сообщение
окно выбора цвета и получить из него код того цвета что был выбран
А! Ну я не понял.
0
Ципихович Эндрю
1414 / 324 / 28
Регистрация: 10.04.2009
Сообщений: 5,223
04.12.2011, 16:15 18
Цитата Сообщение от Gepar Посмотреть сообщение
я хочу диалоговое окно выбора цвета и получить из него код того цвета что был выбран.
нету такого есть всё сразу - цвет размер жир не жир подчеркнуто зачёркнуто
>код того цвета что был выбран
выберете вручную и узнайте ...
0
Gepar
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
04.12.2011, 16:20  [ТС] 19
Ципихович Эндрю, мне пользователю надо предложить окно выбора и сохранить значение того что он выбрал, зачем мне себе предлагать, я и сам для себя цвет могу подобрать. Хотя если решиться проблема в созданной мною теме "Цветовая схема в Excel 2007-2010" то в принципе окно выбора цвета предлагать пользователю наверное даже не понадобиться ...
0
Alex77755
10991 / 3447 / 593
Регистрация: 13.02.2009
Сообщений: 10,240
04.12.2011, 18:23 20
Попробуй так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub QWERT()
Dim R
R = ActiveCell.Interior.Color
Application.Dialogs(xlDialogPatterns).Show
Zvet = ActiveCell.Interior.Color
ActiveCell.Interior.Color = R
 
B = Zvet \ 65536
G = (Zvet - (Zvet \ 65536) * 65536) \ 256
R = Zvet - (Zvet \ 65536) * 65536 - ((Zvet - (Zvet \ 65536) * 65536) \ 256) * 256
S = "Выбран цвет: " & Zvet & vbCrLf _
& "В его состав входят:" & vbCrLf _
& "R = " & R & vbCrLf _
& "G = " & G & vbCrLf _
& "B = " & B & vbCrLf
 
R = Hex(R)
If R = 0 Then
R = "00"
End If
G = Hex(G)
If G = 0 Then
G = "00"
End If
B = Hex(B)
If B = 0 Then
B = "00"
End If
 
S = S & "#" & R & G & B
MsgBox S, 64, ""
Exit Sub
End Sub
1
04.12.2011, 18:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 18:23

Ошибка при вызове диалогового окна
Не прошло и 10 лет, как жизнь заставила вернуться к Бейсику. Напрочь вылетели из головы диалоговые...

Режим выделения диапазона из диалогового окна
Доброго времени суток , всем! Недавно задался таким вопросом как получить адрес выделяемого...

Управление размерами диалогового окна, контроль ввода числовых данных и т.д.
ИЗЛАГАЮ ЧЕТКО И ТОЧНО! у меня курсовик на тему СЛАУ МНЕ НУЖНО СДЕЛАТЬ : 1)УПРАВЛЕНИЕ РАЗМЕРАМИ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.