Страницы: 1
RSS
Button аdding. VBA
 
Добрый вечер!  
Как можно, допустим у меня создается лист и на этом листе чтоб автоматически создавалась кнопка с названием (например "кнопка1") и писался код (допустим самый простой, например:  
Private Sub()  
Call macro1  
End Sub  
 
Заранее огромное спасибо!....
 
Предлагаю сначала создать Форму с такой кнопкой и с кодом в ней. Изначально её нет, а по необходимости вызывать её(по условию).
 
Sub Макрос1()  
   With Worksheets.Add  
       .Name = "Новый лист"  
       With .Buttons.Add(Left:=300.5, Top:=22.75, Width:=101.25, Height:=40.5)  
           .OnAction = "Табель"  
           .Text = "Табель"  
       End With  
   End With  
End Sub
 
Павел, так он хочет сразу с кодом.
 
Вот сразу с кодом  
 
1) Создаётся новый лист с именем "Новый лист"  
2) На этом листе создаётся кнопка с названием "Табель", которая будет вызывать макрос с одноимённым названием "Табель"  
3) Создаётся код макроса "Табель":  
 
Private Sub Табель()  
   MsgBox "Hello World"  
End Sub  
 
 
P.S. Должна стоять галочка в Сервис - Параметры... - Безопасность - Безопасность макросов... - Надёжные издатели - Доверять доступ к Visual Basic Project
 
Спасибо большое, я сегодня взял.  
У меня что-то твой прикрепленный файл не загружается, раньше другие без проблем загружались! Еще, в этом твоем коде:  
Sub Макрос1()  
With Worksheets.Add  
.Name = "Новый лист"  
With .Buttons.Add(Left:=300.5, Top:=22.75, Width:=101.25, Height:=40.5)  
.OnAction = "Табель"  
.Text = "Табель"  
End With  
End With  
End Sub    
Когда я убираю часть кода который создает лист и убираю один 'End With', (Мне не надо чтоб создавался лист, у меня здесь уже есть код на создание листа,точнее я копирую определенный лист, и макрос есть в модуле), выдает ошибку и не выполнятся код.    
Короче мне надо чтоб когда я выполняю код на копирования листа, у меня добавлялся кнопка и эта кнопка направлялся на макрос который у меня есть в модуле.  
И потом кнопка которая у тебя создается, она другая (от Forms) не Вижуал Бэйсовская, мне надо та кнопка  
ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО!
 
хм... ну. с панели VB, так с панели VB
 
Добрый день! Твои файлы у меня никак не загружаются! Можешь сюда вставить все коды. Заранее спасибо!..
 
Вот добавление кнопки с панели MSForms  
 
'должна стоять галочка в Сервис-Параметры...-Безопасность-Безопасность макросов...-  
'-Надёжные издатели-Доверять доступ к Visual Basic Project  
Sub Макрос1()  
   With Sheets("Лист1")  
       With .Buttons.Add(Left:=300.5, Top:=100.75, Width:=101.25, Height:=40.5)  
           .OnAction = "Табель"  
           .Text = "Табель"  
       End With  
   End With  
 
   With ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule  
       .InsertLines .CountOfLines + 1, "Private Sub Табель()"  
       .InsertLines .CountOfLines + 1, "    MsgBox ""Hello World"""  
       .InsertLines .CountOfLines + 1, "End Sub"  
   End With  
End Sub  
 
 
 
 
Вот добавление кнопки с панели VB  
 
'должна стоять галочка в Сервис-Параметры...-Безопасность-Безопасность макросов...-  
'-Надёжные издатели-Доверять доступ к Visual Basic Project  
Sub Макрос1()  
   With ActiveSheet  
       With .OLEObjects.Add(ClassType:="Forms.CommandButton.1", Left:=133.5, _  
           Top:=57.75, Width:=138.75, Height:=47.25)  
       End With  
   End With  
   With ActiveWorkbook.VBProject.VBComponents("Лист1").CodeModule  
       .InsertLines .CountOfLines + 1, "Private Sub CommandButton1_Click()"  
       .InsertLines .CountOfLines + 1, "    MsgBox ""Hello World"""  
       .InsertLines .CountOfLines + 1, "End Sub"  
   End With  
End Sub
 
Спасибо! А как задать имя, и прибавить 2-экземпляра?
 
Sub Макрос1()  
Dim iBtn As OLEObject  
Dim i As Long  
Dim iTop As Long  
   iTop = 40  
   For i = 1 To 3  
       Set iBtn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1")  
       With iBtn  
           .Left = 80  
           .Top = 50 * i  
           .Width = 138.75  
           .Height = 47.25  
           .Object.Caption = "Супер кнопка №" & i  
       End With  
   Next i  
End Sub
 
Ну если в Forms задать имя кнопке  .Text = "Табель", а как тогда в Visual Basic-е задать? Пробую .Caption и .Name  , не получается!  
Спасибо ОГРОМНОЕ! Павел я тебя давно уже признаю как знатока (или Upper Level) Excel и VBA
 
см. выше
 
Оказывается сообщения приходят не сразу, а с запаздыванием, это так?  
Спасибо, кажется сразу все понял!  
Оказывается вот это:  
.Object.Caption = "Супер кнопка №" & i  
И еще вопрос, которое запрашиваю по теме Чистка Кодов, может ты сталкивался или нет,    
Спасибо, заранее!  
Может я теперь достоин поменять имя пользователя на Intermediate_E
Страницы: 1
Читают тему
Наверх