1

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

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

我有两个主要问题。我似乎无法找到如何使用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"- 我需要这个不是指那个特定的值,而是指用户"Instructions"在单元格 C53 的工作表上输入的单词/短语/值。

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

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

4

1 回答 1

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

结束子

于 2013-07-22T14:52:37.570 回答