我要做的是在一个工作表上有一个用户输入字段,用户在其中键入文本到单元格。然后,他们可以运行一个选择不同工作表的宏,然后在查找功能中使用该输入的文本。
找到文本后,需要选择找到文本的整个列,以及右边的所有单元格,直到下一个填充的单元格(在'找到'单词/短语所在的行中) 。然后将删除这些单元格。
我有两个主要问题。我似乎无法找到如何使用具有变化值的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
。
我希望这是有道理的,任何帮助都非常感谢!谢谢!
答案 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