Vba 使用userform选择和删除Excel工作表
我在网上找到了这段代码,它几乎实现了我想要的功能。目前,它提供了一个工作簿中的工作表列表(在userform中),然后我可以选择要删除的工作表(通过复选框),并保留未选择的工作表 我希望它做相反的工作:选择我想要保留的工作表,删除未选择的工作表Vba 使用userform选择和删除Excel工作表,vba,excel,userform,worksheet,Vba,Excel,Userform,Worksheet,我在网上找到了这段代码,它几乎实现了我想要的功能。目前,它提供了一个工作簿中的工作表列表(在userform中),然后我可以选择要删除的工作表(通过复选框),并保留未选择的工作表 我希望它做相反的工作:选择我想要保留的工作表,删除未选择的工作表 Option Explicit 'thanks domenic mrexcel mvp Private Sub SubmitButton_Click() Dim MyArray() As Variant Dim i As Long
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
当您试图更改代码以提供请求的行为时,您遇到了哪些错误?除了提供的答案外,您还希望将MsgBox更改为“请取消选中要删除的工作表”。或者类似的东西。欢迎来到堆栈溢出。如果你得到了问题的答案,你可以接受它作为一个答案,让未来的读者不必阅读所有的评论就能快速了解解决方案。它还将奖励你和回答问题的人一些声望点数。这很有效!!非常感谢,这两天来我一直在为这件事紧张!!