是否可以让InputBox决定我的代码要查看哪一列

时间:2014-09-02 10:01:31

标签: excel-vba vba excel

我到处寻找这个,但找不到它的例子。我有一个代码搜索列并删除包含该单元格中的确切值的所有行。

我想让这个代码可以在任何带有两个输入框的工作表中使用,第一个要求用户查看哪个列(这就是我遇到的问题)

和第二个要求标准。

现有代码就是这样。

    Sub OCR()
    Dim Firstrow As Long
    Dim Lastrow As Long
    Dim Lrow As Long
    Dim CalcMode As Long
    Dim ViewMode As Long

    With Application
        CalcMode = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With

    With ActiveSheet
        .Select
        ViewMode = ActiveWindow.View
        ActiveWindow.View = xlNormalView
        .DisplayPageBreaks = False
        Firstrow = .UsedRange.Cells(1).Row
        Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
        For Lrow = Lastrow To Firstrow Step -1

   'Amend test
    With .Cells(Lrow, "B")
    If Not IsError(.Value) Then
    If .Value = "Test" Then .EntireRow.Delete
    End If
    End With


    'END of loop
        Next Lrow

    End With

所以这将删除Test在相关列(B)中的所有行,但是如何使用InputBox来决定列和要查找的值。

1 个答案:

答案 0 :(得分:2)

替换:

With .Cells(Lrow, "B")

使用:

s = Application.InputBox("Pick a cell", Type:=8).Address(1, 0)
lettre = Split(s, "$")(0)
With .Cells(Lrow, lettre)

修改#1

当InputBox出现时,使用鼠标选择所需列中的任何单元格。

修改#2

当InputBox出现时,键入单元格地址以选择所需列中的任何单元格。您的ScreenUpdating设置禁止使用鼠标。

修改#3

炫耀使用的最终方法是:

s = Application.InputBox("Enter Column Data", Type:=2)
With .Cells(Lrow, s)