Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用输入框删除范围内的值_Excel_Vba - Fatal编程技术网

Excel 使用输入框删除范围内的值

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

嘿,伙计们,我有下面的代码。我想删除用户选择的值范围。那么如果用户选择115116117删除这三行?我应该使用某种类型的循环吗?现在只是删除第一个值。谢谢大家!


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?没有循环,没有循环。。不确定这是否可能。也许如果你使用过滤器。我认为标准可以接受数组作为输入。这样,您可以过滤掉要删除的内容,然后删除可见的行。