Excel 使用输入框删除范围内的值
嘿,伙计们,我有下面的代码。我想删除用户选择的值范围。那么如果用户选择115116117删除这三行?我应该使用某种类型的循环吗?现在只是删除第一个值。谢谢大家!Excel 使用输入框删除范围内的值,excel,vba,Excel,Vba,嘿,伙计们,我有下面的代码。我想删除用户选择的值范围。那么如果用户选择115116117删除这三行?我应该使用某种类型的循环吗?现在只是删除第一个值。谢谢大家! Dim sIDNumber, sResponse As String sIDNumber = Application.InputBox("Enter ID's to delete from workbook: ", "Enter ID's", , 200, 200) If sIDNumber
Dim sIDNumber, sResponse As String
sIDNumber = Application.InputBox("Enter ID's to delete from workbook: ", "Enter ID's", , 200, 200)
If sIDNumber = False Then
Exit Sub
End If
sResponse = MsgBox("Are you sure you wish to remove " & sIDNumber & " from the entire workbook?", vbYesNo, "Delete: " & sIDNumber & "?")
If sResponse = vbNo Then
Exit Sub
End If
Dim myCell, myRange As Range
Dim mySheet As Worksheet
Dim bIDFound As Boolean
For Each mySheet In ActiveWorkbook.Sheets
If TargetSheetName(mySheet.Name) = True Then
For Each myCell In mySheet.Range("C1:CA20000")
If CStr(myCell.Value) = sIDNumber Then
myCell.EntireRow.Delete
bIDFound = True
End If
Next myCell
End If
Next mySheet
If bIDFound = True Then
MsgBox "ID " & sIDNumber & " was removed!"
Else
MsgBox "ID " & sIDNumber & " was NOT found!"
End If
End Sub
''this is just a case to remove from all sheets
Function TargetSheetName(sSheetName As String) As Boolean
Select Case sSheetName
Case "Sheet 1"
TargetSheetName = True
Case "Sheet 2"
TargetSheetName = True
Case "Sheet 3"
TargetSheetName = True
Case "Sheet 4"
TargetSheetName = True
Case "Sheet 5"
TargetSheetName = True
End Select
End Function
您需要一种方法让用户输入多个ID,然后通过一个循环来迭代它们。例如,使用split函数加载到数组中的逗号分隔字符串。不要忘记按相反顺序删除它们。从最大行数到最小行数。我相信你可以用find来找到匹配的ID号,而不是像那样在表格的每个单元格中循环。@ScottHoltzman是的,我厌倦了一个数组,这个数组很难工作。但我并没有试图分裂他们!那可能有用@安德烈亚斯:我会试试看,但如何通过所有ID?没有循环,没有循环。。不确定这是否可能。也许如果你使用过滤器。我认为标准可以接受数组作为输入。通过这种方式,您可以过滤出要删除的内容,然后删除可见的行。您需要一种方法让用户输入多个ID,然后使用循环来迭代它们。例如,使用split函数加载到数组中的逗号分隔字符串。不要忘记按相反顺序删除它们。从最大行数到最小行数。我相信你可以用find来找到匹配的ID号,而不是像那样在表格的每个单元格中循环。@ScottHoltzman是的,我厌倦了一个数组,这个数组很难工作。但我并没有试图分裂他们!那可能有用@安德烈亚斯:我会试试看,但如何通过所有ID?没有循环,没有循环。。不确定这是否可能。也许如果你使用过滤器。我认为标准可以接受数组作为输入。这样,您可以过滤掉要删除的内容,然后删除可见的行。