Страницы: 1
RSS
Фигуры и автофильтр
 
Возможно ли расположить кнопки автофильтра над фигурой?
 
Полагаю, что нет, потому как объекты типа Shape располагаются всегда "поверх" листа. Можно извернуться следующим образом:  
1. На прямоугольник посадить макрос на OnAction, который будет изменять высоту фигуры, высвобождая автофильтр.  
2. после отработки автофильтра, по событию на листе SelectionChange восстанавливаем высоту автофигуры.  
Единственный минус - двойной клик на автофильтр.
 
Ладно, а изменить размер кнопок автофильтра возможно?
 
А вот с кнопочками авторы Excel не подумали, даже масштаб их не берет.    
Бог его знает, даже не задумывался...
 
Спасибо за макрос. В принципе довольно удобный метод: одним щелчком больше, зато эстетика в сохранности. Еще вопрос. Есть ли макрос перекрашивающий фигуру в другой цвет при наведении курсора?
 
Можно конечно, но для выполнения казалось бы скромного действия нужно будет прописать очень сложный код с использованием функций WinAPI и классов. Брр... Забейте, баловство... Можно менять цвет на первый клик, если это устроит.
 
Устроит, конечно:)
 
Хотя, если Вы замените автофигуру на объект ActiveX к примеру Label, то Вашу задумку с цветом можно очень даже просто осуществить. НО позже, пора баинькать, у нас давно за полночь....
 
Буду признателен, если поможете с реализацией. Разумеется, не в ущерб здоровью - до завтра подождет.
 
Baklanoff, Вы извините, может слишком резко. Эксель не книжка-раскраска. Это программа для создания деловых документов. Интерфейс разработчиков вытекает из многолетнего опыта создания офисных программ. Зачем его коверкать? Если уж так не устраивает Ваш изысканный вкус, никто ведь не мешает писать программы с, для Вас приемлемым интерфейсом, на любом языке программирования. Но давно уж подмечено - чем ниже профессиональный уровень пользователя, тем больше тяга к раскрашиванию, бантикам, рюшечкам. А ощущение такое, что человек уже полностью познал все глубинные нюансы, возможности программы. Осталась мелочь - увеличить стрелочки автофильтра:-) Я с табличными процессорами работаю почти 20 лет. Ну не было у меня такой необходимости. И очень сомневаюсь, что это как-то сможет улучшить эстетику документа. А нет, так еще вариант, мож в сторону фотошопа посмотреть?
Я сам - дурнее всякого примера! ...
 
Ценю Ваше мнение, если интересно мое - я не вижу никакой обратной пропорции между профессионализмом и оформлением программы, скорее наоборот. Я может и наивен, но свято верю, что ненавязчивый и удобный интерфейс - одно из достоинств умело выполненной программы (пусть и второстепенное, не спорю). Что касается многолетнего опыта создателей Excel... ну, четыре (почти 5) лет назад им пришла в голову идея сменить интерфейс и впихнуть в Excel новые функции и возможности. Тогда у Вас был шанс сказать: "я 15 (16) лет работаю с табличными процессорами и не было у меня необходимости...", - в общем, думаю, Вы меня поняли. За совет перейти на фотошоп спасибо, ровно как и за неоднозначные намеки на мою компетенцию.
 
По большей части изменения увеличили кол-во форумчан.
 
Спасибо за понимание. Поверьте, это в Ваших же интересах. Вы не сможете самостоятельно переделать код под свои нужды, в случае каких-либо изменений. Тогда зачем Вам эта головная боль? А насчет "профессиональный уровень", я имел ввиду только Эксель. Возможно Вы классный спец в какой-то другой области. В Экселе, судя по Вашим постам - нет. Это абсолютно не с целью Вас обидеть. Я знаю случаи, когда планетяне будучи чайниками сначала, становились очень грамотными специалистами со временем. И Вам искренне желаю того же.  
 
То Serge 007: ага, в основном спрашивающих, где чего найти:-) Но что мне однозначно понравилось, это возможность задавать массив в качестве фильтра в 2007.
Я сам - дурнее всякого примера! ...
 
Вариант: фигура будет окрашена в цвет заливки ячейки А1.
 
Не тот файл...
 
А-ля шторка. Ну дерзайте...  
 
Сергей, понимаю Ваши чувства, но почему нет, люди разные и задачи мы их не видим.
 
Владимир, Юрий, спасибо за варианты. Попробую объединить
 
А можно ли к автофигуре "приклеить" события? Пробовал с помощью класса, но что-то пока не вышло. Если это можно сделать только средствами VBA, покажите пример, пожалуйста.
Hello! My blog: TRADING WAY
 
Пока ждал попробовал ещё поискать ответ на свой вопрос по другим форумам. Ответ найден. Пользователь EducatedFool предлагал достойное решение:  
 
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  
   Label1.Caption = "X= " & X & vbLf & "Y=" & Y  
   Call ОкраскаКнопок(X, Y)  
End Sub  
 
Sub test()  
   MsgBox "макрос запущен", vbInformation  
End Sub  
 
Sub ОкраскаКнопок(ByVal X As Single, ByVal Y As Single)  
   d = 5: Dim sha As Shape  
   For Each sha In Me.Shapes  
       With sha  
           If .Name Like "MyButton*" Then  
               НадКнопкой_поX = ((Abs(.Left - X) < d) Or (Abs(X - .Left - .Width) < d) Or (X - .Left - .Width) * (.Left - X) > 0)  
               НадКнопкой_поY = ((Abs(.Top - Y) < d) Or (Abs(Y - .Top - .Height) < d) Or (Y - .Top - .Height) * (.Top - Y) > 0)  
               КурсорРядом = НадКнопкой_поX And НадКнопкой_поY  
               НоваяПрозрачность = IIf(КурсорРядом, 0.7, 0.1)  
               If НоваяПрозрачность <> .Fill.Transparency Then  
                   .Fill.Transparency = НоваяПрозрачность  
                   '.TextFrame.Characters.Font.Bold = КурсорРядом  
               End If  
           End If  
       End With  
   Next  
End Sub  
 
//---  
 
Жаль что на этом форуме нельзя вставлять код так, чтобы он выглядел как в редакторе. Примите как пожелание для улучшения форума. )))
Hello! My blog: TRADING WAY
 
ПРОБА  
<PRE>  
Call ОкраскаКнопок(X, Y)  
End Sub  
</PRE>
 
Вот такой ещё вопрос по теме.  
 
Объект Label из коллекции ActiveX неплохо подходит для решения поднятой в теме задачи. Но есть ещё одна подзадача в этой задаче. При клике по этому объекту он окрашивается в установленный в свойстве BackColor цвет даже, если в свойстве BackStyle установлена константа fmBackStyleTransparent. И до тех пор пока курсор находится над объектом, даже находясь в статичном состоянии, процессор сильно грузится, а объект заслоняет своим цветом объекты, которые находятся даже над ним по слоям.  
 
Я попробовал при клике по объекту устанавливать заново свойство BackStyle = fmBackStyleTransparent, но это не решает проблему.  
 
Есть ли какое-нибудь решение этой задачи?
Hello! My blog: TRADING WAY
Страницы: 1
Наверх