2015-02-12 76 views
0

我正在尝试创建新工作表时创建一个命令按钮。但是我正面临一个错误。错误438,对象不支持此属性或方法。这里需要一些帮助。干杯。vba创建新工作表时创建命令按钮

Sub wdlsinflow() 

    Dim r As Range, LstRw As Long, LstCo As Long 
    Dim Obj As Object 
    Dim Code As String 

    LstRw = Sheets("sheet2").Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row 
    LstCo = Sheets("sheet2").Cells.Find(What:="*", SearchOrder:=xlColumns, SearchDirection:=xlPrevious, LookIn:=xlValues).Column 

    Const myCompany As String = "RECEIVABLES - INFLOWS" 
    Set r = Sheets("sheet2").Columns(1).Find(myCompany, , , 1) 

    If Not r Is Nothing Then 
     If Not IsSheetExists(myCompany) Then 
      Sheets.Add(After:=Sheets(Sheets.Count)).Name = myCompany 
     End If 

     With Sheets(myCompany) 
      .Cells.Clear 
      Range(r, Sheets("sheet2").Cells(LstRw, LstCo)).Copy .Cells(1) 

     Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ 
      Link:=False, DisplayAsIcon:=False, Left:=200, Top:=100, Width:=100, Height:=35) 
      Obj.Name = "TestButton" 
      'buttonn text 
      ActiveSheet.OLEObjects(1).Object.Caption = "Test Button" 



      Code = "Sub ButtonTest_Click()" & vbCrLf 
      Code = Code & "Call Tester" & vbCrLf 
      Code = Code & "End Sub" 
     End With 
    End If 

    With Sheets(myCompany).VBProject.VBComponents(Sheets(myCompany).Name).CodeModule 
     .insertlines .CountOfLines + 1, Code 
    End With 

End Sub 
+0

和其上线这个错误发生? – 2015-02-12 07:04:48

+0

在这一行'代码'Set Obj = ActiveSheet.OLEObjects.Add(ClassType:=“Forms.CommandButton.1”,_ Link:= False,DisplayAsIcon:= False,Left:= 200,Top:= 100,Width: = 100,高度:= 35) – 2015-02-12 07:10:39

回答

0

这个工作对我来说:

Sub wdlsinflow() 

    Dim sht As Worksheet 
    Dim Obj As Object 
    Dim Code As String 
    Dim cmod 

    Set sht = Sheets.Add(After:=Sheets(Sheets.Count)) 

    With sht 
     .Name = "blah" 
     .Cells.Clear 


     Set Obj = .OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ 
           Link:=False, DisplayAsIcon:=False, Left:=200, _ 
           Top:=100, Width:=100, Height:=35) 

     Obj.Name = "ButtonTest" '<< name must match code below... 
     Obj.Object.Caption = "Test Button" 

     Code = "Sub ButtonTest_Click()" & vbCrLf & _ 
       " Call Tester" & vbCrLf & _ 
       "End Sub" 

     With .Parent.VBProject.VBComponents(.CodeName).CodeModule 
      .insertlines .CountOfLines + 1, Code 
     End With 
    End With 

End Sub 
+0

Hi1感谢您的回应。我仍然遇到错误。在弹出相同的错误之前,弹出窗口提示“此时不能进入中断模式” – 2015-02-12 07:31:14

+0

不能说出什么问题 - 我的版本与你的版本相比简化了,但对我来说工作得很好。 – 2015-02-12 15:45:53

+0

Hafiz,你使用F8(步进)还是F5(跑步)?我使用F8时遇到同样的错误。 – 2015-02-12 19:23:10