2015-08-20 50 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然后将返回所选的特定字符串,因此它必须存储在一个字符串变量中