2015-08-20 54 views
-1

嗨,那裏我一直在研究一個代碼來刪除使用組合框的工作表,但我似乎無法運行它。我已經使用deletesheet子來調用用戶表單,以便組合框將顯示,我可以選擇並刪除表單。但是我已經在工作表(一).Delete得到一個類型不匹配錯誤(我已經把供參考的星號,我跑沒有這些程序)使用組合框刪除工作表

Private Sub setUserForm() 
    With UserForm1 
     .Height = 50: .Width = 111 
     .Caption = " Delete Sheets" 
     With .ComboBox1 
      .BackColor = RGB(240, 250, 255) 
      .ControlTipText = "Select Sheet" 
      .Height = 17: .Width = UserForm1.Width - 15 
      .Top = 7:  .Left = 7: .ListRows = 22 
      .MatchEntry = fmMatchEntryFirstLetter '0 
     End With 
     .Show 
    End With 
End Sub 


Sub deletesheet() 
    Dim a As String 'This is changed 
    Dim cmb As ComboBox 
    Dim ws As Worksheet 
    Set cmb = UserForm1.ComboBox1 
    cmb.Clear 
     For Each ws In Worksheets 
     If ws.Visible Then cmb.AddItem ws.Name 

     Next 

    a = UserForm1.ComboBox1.Text 'This is changed 
    *Worksheets(a).delete* 
     cmb.ListIndex = 0 
     setUserForm 
End Sub 
+0

確切的錯誤是什麼?從目前爲止我可以看到你定義了'Dim a as Integer',然後將其從'UserForm1.ComboBox1.Value'中的值傳遞給它,但是'ComboBox1.Value'是一個不是整數的字符串 – DragonSamu

+0

Dim a As String而不是整數應該解決這個問題 - 我認爲 –

+0

我得到一個下標超出範圍錯誤在工作表(a).delete @ O.Rose – Niva

回答

0

您應該使用

a = UserForm1.ComboBox1.Text 
0

你的代碼更改爲以下:

Sub deletesheet() 
    Dim a As String 'This is changed 
    Dim cmb As ComboBox 

    Set cmb = UserForm1.ComboBox1 
    cmb.Clear 

    a = UserForm1.ComboBox1.Text 'This is changed 
    Worksheets(a).Delete 

End Sub 

需要這些變化,因爲你已經充滿了工作表的名稱,其是ST組合框戒指。 ComboBox1.Text然後將返回所選的特定字符串,因此它必須存儲在一個字符串變量中