Страницы: 1
RSS
Макрос для указанных ячеек
 
Здравствуйте. Вопрос в следующем: как сделать макрос (на кнопку), чтобы он применялся к указанным ячейкам? т.е. условная кнопка "Москва"; нажимаем её и указываем мышью те ячейки, в которые нужно вставить "Москва" и провести ещё какие-то действия (закрасить, шрифт поменять и т.п.). Суть вопроса именно в том, чтобы при нажатии кнопки можно было выбрать неограниченное количество ячеек и Excel сразу бы делал с ними всё, что нужно. Спасибо заранее.
 
The_Prist, а можно поподробнее?))
 
спасибо, это, конечно, выход из ситуации..но хотелось бы без формы это делать и плюс, чтобы я делаю клин на ячейку, к ней сразу применяются какие-то действия, потом на вторую - то же самое..я так думаю, сложность в том, что Excel не будет знать, когда я остановлюсь..если нет решения, то всё равно спасибо за предыдущий совет!
 
ясно, спасибо...обратным путём уже делал..неудобно тем, что часто забываешь, что курсор надо ставить...привычно сначала кнопку нажимать,а потом тыкать, куда надо))
 
Может так? В модуль любого листа.  
 
Public OnOff As Boolean  
Public Sub ToggleButton1_Click()  
   With Me.ToggleButton1  
       If .Value = True Then  
           OnOff = True  
           .Caption = "OFF"  
       Else  
           OnOff = False  
           .Caption = "ON"  
       End If  
   End With  
End Sub  
 
Public Sub Worksheet_SelectionChange(ByVal Target As Range)  
   Dim cel As Range  
   If OnOff = True Then  
       If IsArray(Target.Cells) Then  
           For Each cel In Target.Cells  
               cel.Interior.ColorIndex = 6  
           Next  
       Else  
           Target.Interior.ColorIndex = 6  
       End If  
   End If  
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Да!! то, что нужно! огромное спасибо! на данном этапе знакомства с программированием в Excel не додумался до такого))))
 
LightZ, а как сделать так, чтобы на одно листе 2 и более кнопок таких можно было разместить? я меняю имена переменных, но вторая кнопка просто нажимается без всякого эффекта..или здесь простым копированием с заменой переменных не обойтись?
 
А что вторая (и т.д) кнопка должна делать? Те же самые действия?
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Богдан, а зачем  
If IsArray(Target.Cells) Then?
 
Да, точно - незачем. Спасибо за подсказку!  
Почему-то решил, что больше одной ячейки сразу заливать цветом не будет и сделал цикл (надо было сначала потестировать). :)  
 
Тогда можно просто так:  
Public Sub Worksheet_SelectionChange(ByVal Target As Range)  
   If OnOff = True Then  
       Target.Interior.ColorIndex = 6  
   End If  
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
PS. Всё время думал, что Target это как ActiveCell, а оказывается это тоже самое, что и Selection. :)  
Т.е. Target.Value может быть массивом. Круто.
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
по поводу второй и т.п. кнопки: они должны делать тоже самое, только другим цветом заливать
 
в целом, с доп. кнопками разобрался..создаю кнопку пишу в ней тот же макрос только переменную называю не OnOff, а OnOff1 условно...затем во второй макрос после первого условия добавляю ещё одно if OnOff1 = True Then...если есть решение получше, подскажите))
 
Думаю проще так - добавить ещё одну публичную переменную для цвета.  
Каждая кнопка меняет всё тот же флаг OnOff, плюс ещё задаёт значение цвета.  
Ну а в Worksheet_SelectionChange так:  
cel.Interior.ColorIndex = переменная_цвета  
Только нужно ещё эти тоггле перевязать, чтоб одновременно не нажать несколько.  
Поэтому ещё проще/лучше так: - один тоггле на вкл/откл, другие связанные оптионбаттоны на выбор цвета (их можно в этот цвет покрасить).
Страницы: 1
Читают тему
Наверх