2016-02-01 1 views
1

У меня есть кнопка (путем нажатия), чтобы создать новый лист и вставить на него кнопку, но я хочу импортировать коды в новую кнопку (здесь MyPrecodedButton).Как импортировать код на кнопку управления ActiveX на другой странице?

Private Sub CommandButton1_Click() 
Dim z As Integer 
Dim wb As Workbook 
Dim ws2 As Worksheet, wsnew As Worksheet 

Set wb = ThisWorkbook 
Set ws2 = wb.Sheets("Sheet2") 

z = ws2.Cells(2, 1).Value 

Set wsnew = Sheets.Add ' Declare your New Sheet in order to be able to work with after 
wsnew.Name = "PIAF_Summary" & z 

z = z + 1 

With wsnew.Range("A1:G1") 
     .Merge 
     .Interior.ColorIndex = 23 
     .Value = "Project Name (To be reviewed by WMO)" 
     .Font.Color = vbWhite 
     .Font.Bold = True 
     .Font.Size = 13 
End With 
ws2.Cells(2, 1).Value = z 

Dim Rngc As Range: Set Rngc = wsnew.Range("F35") 
With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=Rngc.Left, Top:=Rngc.Top, Width:=205, Height:=20) 
    .Name = "MyPrecodedButton" ' change the name 
End With 
End sub 

Вот код для MyPrecodedButton

Public Sub MyPrecodedButton_Click() 
    MsgBox "Co-Cooo!" 
End Sub 
+0

Если вы хорошо подумали, вам не нужно вводить коды (чтобы ваш код работал с любой ситуацией). – PatricK

+0

простой способ заключается в создании листа шаблона, который добавляет все элементы управления, необходимые с кодом, и форматирует его по мере необходимости (слияние, цвет ... и т. Д.) И скрыть этот лист, и каждый раз, когда вам нужно добавить новый лист, просто скопируйте шаблон лист и дать ему новое имя и показать его. – Fadi

ответ

1

Давайте кратко продемонстрировать, что вы можете сделать с помощью VBA для добавления кнопок.

Ниже код добавит кнопку в ячейку B2, если ActiveSheet не является «Лист1».

Option Explicit 

Sub SayHello() 
    MsgBox "Hello from """ & ActiveSheet.Name & """" 
End Sub 

Sub AddButton() 
    Dim oRng As Range 
    Dim oBtns As Buttons ' Add "Microsoft Forms 2.0 Object Library" to References if you want intellisense 
    If ActiveSheet.Name <> "Sheet1" Then ' Only works if it's not "Sheet1" 
     Set oRng = Range("B2") 
     Set oBtns = ActiveSheet.Buttons 
     With oBtns.Add(oRng.Left * 1.05, oRng.Top * 1.05, oRng.Width * 0.9, oRng.Height * 2 * 0.9) 
      .Caption = "Say Hello!" 
      .OnAction = "SayHello" 
     End With 
     Set oBtns = Nothing 
     Set oRng = Nothing 
    End If 
End Sub 

До и после скриншоты:
Before   After

Теперь Щелчок по кнопке:
Action

Итак, если вы код достаточно общий (для работы со всеми возможными ситуациями), нет необходимости добавлять коды через код. то есть ваши коды готовы, а затем просто назначьте свойство OnAction кнопки, чтобы позвонить правильно Sub.

Смежные вопросы