Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 2)

Модерирует : ShIvADeSt

ShIvADeSt (11-01-2010 10:17): http://forum.ru-board.com/topic.cgi?forum=33&topic=10903  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
 
Обсуждаем вопросы только по Excel VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Excel, не относящиеся к программированию, задаем в теме Excel FAQ

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Предыдущие ветки топика: Часть 1
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format (eng.)
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами Excel (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Excel через меню Сервис (Tools) - Макрос (Macro) - Начать запись (Record New Macro). Подробнее здесь. В большинстве случаев получившийся код (Сервис-Макрос-Макросы-Изменить) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
    Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроення помощь (F1), естественно.
     
    Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылазит ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
    Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

     
    Рекомендуется к прочтению:
  • Первые шаги с Excel VBA
  • Excel VBA: Приёмы программирования
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Daily Dose of Excel (eng.) - тематический блог: советы по работе с Excel и прочие материалы
  • Excel Macros & Excel VBA Code Tips, Tricks (eng.) - советы, трюки и уловки
  • Mr. Excel (forum) (eng.) - весьма оживленный форум по Excel&VBA.
  • Приемы, хитрости, трюки и нюансы работы в Microsoft Excel - сайт "Планета Excel", целиком посвященный Excel и всему, что с ним связано.
  • Microsoft Excel: Таблицы и VBA. Справочник. Вопросы и Ответы. Советы. Примеры.  
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2, часть 3
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов
    Найти "чужое" окно и нажать в нем кнопку (вписать текст в текстовое поле)
    Работа с UNICODE-символами в VBA: запись, чтение из ячейки, перевод в ASС и обратно
    Как программно подключить дополнительные библиотеки (например, "Microsoft Scripting Runtime" или "Microsoft ActiveX Data Objects 2.8 Library) через References

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:58 23-04-2007 | Исправлено: JekG, 22:32 10-01-2010
    gett



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    простите за простой вопрос, я не очень работаю с excel.
    Когда оплачиваю карточкой, если сумма свише 1500 банк делит ее на три части, если свише 6000 делит ее на шест части. Как сделат чтобы при вводе сумми, ети деления происходили по автоматизму?  
    На пример, счет 10.000, оплатил 5.1.2008 3.000, счет должен бит 5.1 9.000, 5.2. 8.000, 5.3. 7.000.
    Не надо ничего стильного, только простая таблица учета состояния счета. Пошагово, если можно.

    Всего записей: 158 | Зарегистр. 08-10-2006 | Отправлено: 15:48 08-01-2008 | Исправлено: gett, 15:51 08-01-2008
    kalinakrasnay



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Привет! такая история: делаю интеграцию Excel+какое-нибудь графическое приложение. но вот в списке доступных библиотек объектов(Tools->Referense) есть только объекты Photoshop, хотя на компе установлены еще и ACDSee,ну и строенный Paint. интересно можно ли где-то скачать, взять требующиеся библиотеки.??
    спасибо


    ----------
    Есть только 2 мнения: мое и неправильное

    Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 16:17 08-01-2008 | Исправлено: kalinakrasnay, 19:34 08-01-2008
    Smog



    Жираф-Сибиряк
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gett
    в а2 забить сумму, в В2 формулу, например такую
    =ЕСЛИ(И(A2<6000;A2>=1500);"3x"&(A2/3);ЕСЛИ(A2>=6000;"6x"&(A2/6);"1x"&A2))


    ----------
    Клиент форума Ru-board (Rb_client)-с предварительной поддержкой ру-борда!
    Требуются бета-тестеры!
    Обновление v0.0.3.6 (21.04.08)!

    Всего записей: 5394 | Зарегистр. 20-06-2003 | Отправлено: 21:14 08-01-2008 | Исправлено: Smog, 21:15 08-01-2008
    kalinakrasnay



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    снова привет! пытаюсь из экселя программно создать файл презентации, делаю так:

    Цитата:
    Private Sub CommandButton1_Click()
        Dim pr As PowerPoint.Application
        Dim mpr As PowerPoint.Presentation
        Set pr = CreateObject("PowerPoint.Application")
        pr.Presentations.Add msoTrue
        Set mpr = pr.ActivePresentation
        mpr.SaveAs (ThisWorkbook.Path + "\" + ima.Text)
    End Sub

    (имя создаваемой презентации пользователь вводит в текстовое поле  ima на форме)
    но это  работает только если я перед этим вручную запущу Power Point. хотелось бы без этого обойтись, если н е запускаю вручную Power Point, то выдает ошибку что  "pr не  является активной презентацией", и чтоб  пользователь не видел процесса создания. как ошибку исправить не пойму...???

    ----------
    Есть только 2 мнения: мое и неправильное

    Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 21:15 08-01-2008 | Исправлено: kalinakrasnay, 21:17 08-01-2008
    Smog



    Жираф-Сибиряк
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kalinakrasnay

    Цитата:
     
    Sub Макрос1()
      Dim pr As PowerPoint.Application
        Dim mpr As PowerPoint.Presentation
        Set pr = CreateObject("PowerPoint.Application")
        Set mpr = pr.Presentations.Add
        mpr.SaveAs (ThisWorkbook.Path + "\" + ima.Text)
    End Sub
     

     
    Добавлено:
    Private Sub CommandButton1_Click()  
        Dim pr As PowerPoint.Application  
        Dim mpr As PowerPoint.Presentation  
        Set pr = CreateObject("PowerPoint.Application")  
        Set mpr = pr.Presentations.Add  
        mpr.SaveAs (ThisWorkbook.Path + "\" + ima.Text)
    End Sub
     
    то есть

    ----------
    Клиент форума Ru-board (Rb_client)-с предварительной поддержкой ру-борда!
    Требуются бета-тестеры!
    Обновление v0.0.3.6 (21.04.08)!

    Всего записей: 5394 | Зарегистр. 20-06-2003 | Отправлено: 21:24 08-01-2008
    kalinakrasnay



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Smog
    спасибочки большое!!!! теперь работает без проблем!
     
    Добавлено:
    извиняюсь за наглость, но как в этой же задаче
    Цитата:
    Private Sub CommandButton1_Click()  
        Dim pr As PowerPoint.Application  
        Dim mpr As PowerPoint.Presentation  
        Set pr = CreateObject("PowerPoint.Application")  
        Set mpr = pr.Presentations.Add  
        mpr.SaveAs (ThisWorkbook.Path + "\" + ima.Text)  
    End Sub

    я его дополнила (теперь добавляется нужное мне кол-во слайдов и картинка на каждый из них), на слайде имеется одна область для картинки и 2 области для текста (заголовок и собственно текст)

    Цитата:
    n = 0
        For i = 1 To dob_kart.ListCount
            mpr.Slides.Add i, ppLayoutTextAndClipart
            mpr.Slides(i).Shapes.AddPicture Filename:="" + kyda + dob_kart.List(n) + "", LinkToFile:=msoTrue, SaveWithDocument:=msoTrue, Left:=100, Top:=100, Width:=w, Height:=h
            n = n + 1
        Next

    как добавить картинку разобралась, а вот добавить в нужные текстовые области любой текст (с источником текста я уж потом разберусь) не поняла

    Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 21:32 08-01-2008 | Исправлено: kalinakrasnay, 22:16 08-01-2008
    Smog



    Жираф-Сибиряк
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Код:
    Sub Макрос1()
     
       Dim pr As PowerPoint.Application
        Dim mpr As PowerPoint.Presentation
        Set pr = CreateObject("PowerPoint.Application")
       Set mpr = pr.Presentations.Add
        Dim tShape As PowerPoint.Shape
        n = 0
       For i = 1 To 2
           mpr.Slides.Add i, ppLayoutTextAndClipart
            Set tShape = mpr.Slides(i).Shapes(2)
           tShape.TextFrame.TextRange.Text = "Требуемый текст" & Chr(13) & _
            "Для вставки" & Chr(13) & "В презентацию"
           n = n + 1
       Next
       mpr.SaveAs ("c:\1.ppt")
    End Sub  

    Всего записей: 5394 | Зарегистр. 20-06-2003 | Отправлено: 22:53 08-01-2008 | Исправлено: Smog, 22:55 08-01-2008
    kalinakrasnay



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Smog
    СПАСИБО, отлично работает!!!!))
     смотрю у меня прямо беда с присваиванием объектных переменных(

    Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 10:23 09-01-2008
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smog
    а как вы в вашем посте текст с форматированием кода получили? Это какой-то эксперт умеет? научите нас всех, пожалуйста...

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 12:51 09-01-2008
    Smog



    Жираф-Сибиряк
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SERGE_BLIZNUK
    это умеет клиент ссылка в моей подписи

    ----------
    Клиент форума Ru-board (Rb_client)-с предварительной поддержкой ру-борда!
    Требуются бета-тестеры!
    Обновление v0.0.3.6 (21.04.08)!

    Всего записей: 5394 | Зарегистр. 20-06-2003 | Отправлено: 15:07 09-01-2008
    visual73



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто-нибудь может помочь по такому вопросу:
     
    Мне нужны цвета палитры в формате RGB текущей цветовой темы.
    Я могу получить 10 основных цветов палитры для раскраски своих кнопок:

    Код:
    UserForm1.btnКнопка.BackColor = _
    ActiveWorkbook.Theme.ThemeColorScheme(xlThemeColor).RGB

    Остальные 50 цветов задаются в Excel с помощью свойства .TintAndShade
    Как его перевести в RGB и получить оставшиеся оттенки 50 цветов?
    Короче нужно соединить xlThemeColor и .TintAndShade в формате RGB.
     
    Есть примеры реализации для Word, но до ума никак не могу довести.
     
    Может кто знает решение данной проблемы не в Hex формате, будет еще лучше, а то что-то у меня голова едет от этого шестнадцатиричного кода.
     
    P.S. Как присвоить свойству .BackColor значение в формате Hex?

    Всего записей: 962 | Зарегистр. 26-12-2005 | Отправлено: 18:48 09-01-2008 | Исправлено: visual73, 19:00 09-01-2008
    kalinakrasnay



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    последний разок сегодня прошу о помощи...последнее что осталось реализовать (все происходит в экселе) это отправка презентации создающейся в процессе работы программы по почте, с помощью Outlook (пользователь адрес мыла вводит вручную, ну я так придумала себе, чтоб проще было). библиотеку подключила...но в аутлуке нельзя записывать макросы, что для меня просто  погибель!!!!! так что я не знаю даже с чего начать. сделала только пару объявлений , ну  соотвественно и объекты можно создать...дальше не пойму
    Dim pochta As Outlook.Application
    Dim vlojenie As Outlook.Attachment
    Dim adres As Outlook.Recipient
     
    Добавлено:
    хотя вот нашла что-то приличное и похожий пример  на мою задачу во встроенном хелпе....щас поразбираемся
     
    Добавлено:
    какой хороший пример был в хелпе, все поняла как сделать, даже работает все!

    Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 20:02 09-01-2008 | Исправлено: kalinakrasnay, 20:05 09-01-2008
    Smog



    Жираф-Сибиряк
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    visual73

    Цитата:
    P.S. Как присвоить свойству .BackColor значение в формате Hex?

    для этого надо hex перевести в long

    Цитата:
    Есть примеры реализации для Word, но до ума никак не могу довести.

     
    показывайте

    Цитата:
    свойства .TintAndShade

    свойство чего?
    kalinakrasnay

    Цитата:
    какой хороший пример был в хелпе, все поняла как сделать, даже работает все!


     
    Добавлено:
    visual73

    Код:
    UserForm1.CommandButton1.BackColor = ActiveWorkbook.Colors(5)

    ???

    Всего записей: 5394 | Зарегистр. 20-06-2003 | Отправлено: 21:14 09-01-2008
    visual73



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smog
    1.
    Цитата:
    для этого надо hex перевести в long  

    Встречный вопрос:
    При конвертации HEX формата получаю минусовое число, которое не могу присвоить .BackColor ...?
    2.
    Цитата:
    свойства .TintAndShade  
    свойство чего?

    Объекта Excel. Начать можно с Ячейки. Все что можно закрасить в цвет. Напр.,

    Код:
       With Selection.Interior
                      .ThemeColor = xlThemeColorAccent1
                      .TintAndShade = 0.0
                End With

    Так я получаю базовый цвет, и могу его реализовать, как я уже писал, через

    Код:
    UserForm1.btnКнопка.BackColor = _  
    ActiveWorkbook.Theme.ThemeColorScheme(xlThemeColor).RGB  

    Однако если Вы замените напр.

    Код:
    .TintAndShade = 0.4

    то... - вот эту строчку я и ищу
     
    3.
    Цитата:
    UserForm1.CommandButton1.BackColor = ActiveWorkbook.Colors(5)

    Таким "Макаром" я получаю стандартную палитру цветов. Это не то. Если Вы ее сравните (Excel_2007) с палитрой напр., когда Вы юзаете заливку ячейки, а это и есть текущая цветовая палитра Темы, то все поймете.
    Мне нужна не явная ссылка на цвет, а можно сказать относительная ссылка на цвет текущей (выбранная цветовая схема юзером, а может и видоизмененная тем же юзером) палитры.
    4.
    Цитата:
    показывайте
    Ву а ля...
    Подробнее...
    Если сумеете разобраться, прошу опубликовать

    Всего записей: 962 | Зарегистр. 26-12-2005 | Отправлено: 09:14 10-01-2008 | Исправлено: visual73, 09:25 10-01-2008
    visual73



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smog
    visual73
    по первому пункту:
    При конвертации HEX формата получаю минусовое число, которое не могу присвоить .BackColor ...?
    Напр
    a=CLng("&HD500FFFF")   '=-721354753
    Range("A").Interior.Color=a
    Но уже так не работает:
    UserForm1.btnКнопка.BackColor =a
    Почему?

    Всего записей: 962 | Зарегистр. 26-12-2005 | Отправлено: 11:40 10-01-2008
    vasiliy74



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть задачка по скорости выполнения кода понял что через сводную таблицу решается во много раз быстрее, записал макрос залез отредактировал, остался вопрос как перебирать столбцы сводной таблицы для преобразования???
    Суть задачи преобразовать сводную таблицу

    например вот сводная таблица:  
    результат жжж ккк ввв ггг    
    11-11-07 0 2 1 4    
    12-11-07 4 0 1 3    
    13-11-07 4 0 1 2    
    14-11-07 0 0 1 1

    нужно получить таблицу (нулевые значения нам не нужны и мы их исключаем):
    дата ко-во наименование    
    12-11-07 4 жжж    
    13-11-07 4 жжж    
    11-11-07 2 ккк    
    11-11-07 1 ввв    
    12-11-07 1 ввв    
    13-11-07 1 ввв    
    14-11-07 1 ввв    
    11-11-07 4 ггг    
    12-11-07 3 ггг    
    13-11-07 2 ггг    
    14-11-07 1 ггг

     
    как правильнее организовать перебор???

    Всего записей: 289 | Зарегистр. 21-02-2006 | Отправлено: 14:19 10-01-2008 | Исправлено: vasiliy74, 14:36 10-01-2008
    Smog



    Жираф-Сибиряк
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    visual73
    проблему понял, попробую  
    vasiliy74
    а в чем проблема?

    Код:
    Sub qw()
    n = 7
    Cells(n, 1) = "дата"
    Cells(n, 2) = "ко-во "
    Cells(n, 3) = "наименование"
    n = n + 1
     
    For stroka = 2 To 5
     
       For stolbec = 2 To 5
       If Cells(stroka, stolbec) <> 0 Then
       Cells(n, 1) = Cells(stroka, 1)
       Cells(n, 2) = Cells(stroka, stolbec)
       Cells(n, 3) = Cells(1, stolbec)
       Cells(n, 1).NumberFormat = "m/d/yyyy"
       n = n + 1
       End If
         
        Next stolbec
         
     
    Next stroka
     
    End Sub

     
    Только вместа цикла for лучше while с проверкой на непустую ячейку. Ну и переменные сами объявите И Cells родителя указать
     
    Добавлено:
    visual73

    Код:
    Function ApplySchemeColor(SchemeColor As XlThemeColor, TintAndShade As Double) As String
       Dim LightnessOrDarkness As String
       If TintAndShade >= 0 Then
           LightnessOrDarkness = "FF" & Right$("0" & Hex$((1 - TintAndShade) * &HFF), 2)
       Else
           LightnessOrDarkness = Right$("0" & Hex$((1 + TintAndShade) * &HFF), 2) & "FF"
       End If
       ApplySchemeColor = "&H" & "D" & Hex$(SchemeColor) & "00" & LightnessOrDarkness
    End Function
     
     
     
    Private
    Sub CommandButton2_Click()
    a = ApplySchemeColor(xlThemeColorAccent1, 3)
     b = Right(a, 2)
     g = Left(Right(a, 4), 2)
     r = Left(Right(a, 6), 2)
       With Selection
            .Interior.Color = a
        End With
    dd = ConvertDec(r & g & b)
    CommandButton2.BackColor = dd
    Cells(1, 1).Interior.Color = dd
    End Sub
     
     
    Function
    ConvertDec(heximal) As Long
    'объявим две переменные
    'одну для шестнадцатеричной цифры числа
    Dim Simvol As String
    'вторую для соответствующей ему десятичной цифры
    Dim DesChislo As Long
    'а так же переменную для цикла
    Dim x As Long
    'обнулим
    ConvertDec = 0
    'переберем все цифры шестнадцатеричного числа
    'и каждой поставим в соотвествие десятичную
    For x = 1 To Len(heximal)
    Simvol = Mid(heximal, x, 1)
    If
    UCase(Simvol) = "A" Then
    DesChislo = 10
    ElseIf UCase(Simvol) = "B" Then
    DesChislo = 11
    ElseIf UCase(Simvol) = "C" Then
    DesChislo = 12
    ElseIf UCase(Simvol) = "D" Then
    DesChislo = 13
    ElseIf UCase(Simvol) = "E" Then
    DesChislo = 14
    ElseIf UCase(Simvol) = "F" Then
    DesChislo = 15
    Else
    DesChislo = Val(Simvol)
    End If
    'накапливаем в нашей функции результат
    ConvertDec = ConvertDec + DesChislo * 16 ^ (Len(heximal) - x)
    Next x
    End Function

     
    ?

    ----------
    Клиент форума Ru-board (Rb_client)-с предварительной поддержкой ру-борда!
    Требуются бета-тестеры!
    Обновление v0.0.3.6 (21.04.08)!

    Всего записей: 5394 | Зарегистр. 20-06-2003 | Отправлено: 15:06 10-01-2008 | Исправлено: Smog, 15:55 10-01-2008
    visual73



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smog
    Большое спасибо! Особенно за конвертер Hex.
     
    К сожалению проблема с цветом осталась та же. Мы имеем ярко зеленую кнопку! Хотя Word-овский макрос раскрашивает текст в цвет палитры Текущей Темы. А Ярко Зеленого цвета вообще в палитре нету. Почему так происходит с Excel я не понимаю.
     
    Это была попытка прямого решения проблемы получения цвета Текущей Темы. Я думаю что решение данной проблемы все же существует, но дальнейшее изучение данного вопроса приостанавливаю т.к. нашел см.ниже. Если встретите решение данного вопроса  прямым способом - очень интересно взглянуть!
     
    Второй способ который я рассматривал, так называемый косвенный, с привлечением раскраски ячеек через Cells(r, c).Interior.Color натыкался на проблему неоднозначности свойства .TintAndShade, которое я раньше думал принимает в палитре только стандартные значения - 0.8, 0.6, 0.4, -0.25 и -0.5. Однако узнав что могут быть любые значения, застрял на том как раскрасить ячейки в, напр. 3-ий по горизонтали и 5-ый по вертикали цвет палитры?
    Помощь пришла от Уокенбаха, в его утилите PUP v.7/Alternate Row Shading реализовано то что я хотел, вторым способом. Разместив раскрашенные в текущую палитру ячейки в надстройке этой утилиты и передавая ей Текущую Цветовую Тему из файла пользователя

    Код:
    ThisWorkbook.Theme.ThemeColorScheme.Colors(i) = ActiveWorkbook.Theme.ThemeColorScheme.Colors(i)

    Автоматом изменяются цвета ячеек в текущую палитру. А делее легко

    Код:
    Buttons(i).ColorButton.BackColor = ThisWorkbook.Worksheets("Colors").Cells(r, c).Interior.Color

     
    Все гениальное - просто! Уокенбах - Мр. "Электронная Таблица"!
     
    Еще раз благодарю за желание помочь!

    Всего записей: 962 | Зарегистр. 26-12-2005 | Отправлено: 16:49 10-01-2008
    Smog



    Жираф-Сибиряк
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    visual73

    Цитата:
    Если встретите решение данного вопроса  прямым способом - очень интересно взглянуть!

     
    http://proofficedev.com/blog/2007/10/10/colours-in-word-2007-part-2/
    здесь же по-моему все есть?
     
    Только в кучу собрать.

    Цитата:
    Второй способ который я рассматривал, так называемый косвенный, с привлечением раскраски ячеек через Cells(r, c).Interior.Color

    Тоже думал о таком.  
    Кстати, свойство TintAndShade нагляднее задавать в виде , н-р "128 / 255 "
     

    Цитата:
    Еще раз благодарю за желание помочь!

    Да особо не за что
    На русском языке по теме ничего, еще 2007 не осваивает никто?  


    ----------
    Клиент форума Ru-board (Rb_client)-с предварительной поддержкой ру-борда!
    Требуются бета-тестеры!
    Обновление v0.0.3.6 (21.04.08)!

    Всего записей: 5394 | Зарегистр. 20-06-2003 | Отправлено: 17:44 10-01-2008
    kerimchik



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SAS888

    Цитата:
    Стандартная функция Excel "СчетЕсли".
    Следующий макрос, например, подсчитает количество x в столбце A.
     
    Sub CIF()
        x = "q" 'x может быть любого типа
        MsgBox Application.CountIf(Range("A:A"), x)
    End Sub

     
    Нет. у меня например в столбике 15 раз повторяется слова "Привет", 20 раз "пока" и 25 раз "как дела"
    Я хочу чтоб в колонке B отображалось сколько слов ПРивет, сколько Пока и сколько как дела... А чтоб не подсчитывать их в ручную... Можно такое?
    То что Вы написали, он считает определенные слова или цифры... Но я хочу чтоб все показывал...

    Всего записей: 40 | Зарегистр. 16-11-2005 | Отправлено: 18:02 10-01-2008
       

    Страницы: 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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 2)
    ShIvADeSt (11-01-2010 10:17): http://forum.ru-board.com/topic.cgi?forum=33&topic=10903


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru