2015-02-12 75 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