繁体   English   中英

使用用户表单选择和删除Excel工作表

[英]Selecting and deleting Excel sheets with userform

我在网上找到了这段代码,几乎可以完成我想要的。 当前,它在工作簿中(在用户窗体内)提供工作表的列表,然后我可以选择要删除的工作表(通过复选框),并保留未选择的工作表。

我希望它的工作与此相反:选择我要保留的工作表并删除未选择的工作表。

Option Explicit
'thanks domenic mrexcel mvp
Private Sub SubmitButton_Click()
    Dim MyArray() As Variant
    Dim i As Long
    Dim Cnt As Long
    With Me.ListBox1
        Cnt = 0
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                Cnt = Cnt + 1
                ReDim Preserve MyArray(1 To Cnt)
                MyArray(Cnt) = .List(i)
            End If
        Next i
        If Cnt > 0 Then
            If Worksheets.Count > UBound(MyArray) Then
                Application.DisplayAlerts = False
                Worksheets(MyArray).Delete
                Application.DisplayAlerts = True
                Call UpdateSheetList
            Else
                MsgBox "A workbook must contain at least one visible sheet.", vbExclamation
           End If
        Else
           MsgBox "Please select one or more sheets for deletion...", vbExclamation
        End If
   End With
End Sub
Private Sub CancelButton_Click()
'unload form
    Unload Me
End Sub
Private Sub UserForm_Initialize()
    Call UpdateSheetList
End Sub
Private Sub UpdateSheetList()
    Dim wks As Worksheet
    With Me.ListBox1
        .Clear
        For Each wks In Worksheets
            .AddItem wks.Name
        Next wks
    End With
End Sub

尝试将代码的这一部分从True更改为False

For i = 0 To .ListCount - 1
    'Change the next line
    If .Selected(i) = False Then
        Cnt = Cnt + 1
        ReDim Preserve MyArray(1 To Cnt)
        MyArray(Cnt) = .List(i)
    End If
    Next i

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM