Я работаю над кодом, который имеет две командные кнопки:
1) ВХОД ПОЛЬЗОВАТЕЛЯ
2) Выполнить
При нажатии кнопки ВВОД ПОЛЬЗОВАТЕЛЯ появляется пользовательская форма. На основе входных данных UserForm формат рабочего листа корректируется, и пользователь вводит данные в рабочий лист по запросу. Кнопка «Выполнить» выполняет вычисления и заполняет остальную часть листа, а затем отображает результаты в виде графика ИЛИ открывает новый лист, который затем содержит те же две кнопки.
Я могу создать новый лист, но он содержит только одну командную кнопку. Мой код ниже:
Dim obj As Object
Dim Code As String
Dim obj2 As Object
Dim code2 As String
With Sec_Delay
Set obj = .OLEObjects.Add(classType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=279, _
Top:=210.75, Width:=109.5, Height:=24)
obj.Name = "ButtonTest"
obj.Object.Caption = "USER INPUT"
Code = "Sub ButtonTest_Click()" & vbCrLf & _
"UF_input.Show" & vbCrLf & _
"End Sub"
Set obj2 = .OLEObjects.Add(classType:="Forms.CommandButton.2", _
Link:=False, DisplayAsIcon:=False, Left:=277.5, _
Top:=236.25, Width:=111, Height:=24)
obj2.Name = "Execute2Test"
obj2.Object.Caption = "Execute"
code2 = "Sub Execute2Test_Click()" & vbCrLf & _
"Cells(8,1) = 1" & vbCrLf & _
"End Sub"
With .Parent.VBProject.VBComponents(.CodeName).CodeModule
.insertlines .CountOfLines + 1, Code
End With
End With
Этот код находится внутри моей подпрограммы, которая создает новый лист. Новый лист называется «Sec_Delay» и имеет только одну командную кнопку. Я поднял код для первой командной кнопки откуда-то еще в stackoverflow, поэтому я не знаком с тем, что делает последняя часть:
With .Parent.VBProject.VBComponents(.CodeName).CodeModule
.insertlines .CountOfLines + 1, Code
End With
Но в основном я понимаю, как работает OLEObject. Я просто не понимаю, как сделать вторую командную кнопку для нового листа.
Как я могу создать вторую командную кнопку? Почему Forms.CommandButton.2 ничего не делает? Что вообще означает ".1"? Возможно ли иметь два объекта OLEObject в одной подпрограмме?