有没有办法在excel宏中使用find函数更改用户输入的值?

时间:2013-07-22 14:30:09

标签: excel excel-vba replace vba

我要做的是在一个工作表上有一个用户输入字段,用户在其中键入文本到单元格。然后,他们可以运行一个选择不同工作表的宏,然后在查找功能中使用该输入的文本。

找到文本后,需要选择找到文本的整个列,以及右边的所有单元格,直到下一个填充的单元格(在'找到'单词/短语所在的行中) 。然后将删除这些单元格。

我有两个主要问题。我似乎无法找到如何使用具有变化值的Find函数(我说值但我的意思是在用户输入的字段中放入任何单词,短语等)。我只能搜索特定值,而不能引用用户输入的字段。

第二个问题是选择列 - 一旦Find函数找到用户输入的值/单词/短语,它就会选择它所在的单元格。我希望它选择整个列(和列)在它的右边,直到特定行中的下一个填充单元格)。

这是一个类似的问题,因为我似乎无法引用用户输入的值/单词短语的列,因为它会不断变化。我只能选择某个列,问题是它选择的列可能不需要在下次运行宏时删除,因为它找到的值不断更新。

这是我到目前为止的代码。

Sub Macro3()
    Sheets("Instructions").Select
    Range("C53").Select
    Selection.Copy
    Sheets("Forecast").Select
    Cells.Find(What:="4150T83G01", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Columns("BW:BY").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
End Sub

基本上,C53的范围永远不会改变。我一直希望用户输入要找到的单词/短语/值。

代码显示Cells.Find(What:="4150T83G01" - 我需要这个不是指那个特定的值,而是在单元格C53中的"Instructions"表单上引用用户输入的单词/短语/值。

最后,代码显示Columns("BW:BY").Select - 我需要这个来引用用户输入的单词/短语/值的列以及找到的单元格右边的列,直到下一个填充的单元格,而不是特定的列BW:BY

我希望这是有道理的,任何帮助都非常感谢!谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试使用录制的宏? 要做这些事情,你需要的不仅仅是录制宏。

Sub Macro3()
Dim strFind As String
Dim rngFind As Range
Dim i As Integer

strFind = Sheets("Sheet2").Range("C3").Value
Set rngFind = Sheets("Sheet1").Cells.Find(What:=strFind, LookAt:=xlPart)
'check if value is found
If Not rngFind Is Nothing Then
    i = 0
    Do While rngFind.Offset(0, i + 1) = ""
        i = i + 1
    Loop
    rngFind.Resize(1, i + 1).EntireColumn.delete Shift:=xlShiftToLeft
End If

End Sub