我一直在处理 Excel 工作表,我使用宏基本上运行“查找功能”以在单独的工作表上查找单词/短语,然后删除该单词/短语所在的整个列。目前,感谢我的上一篇文章(有没有办法使用 find 函数在 excel 宏中更改用户输入的值?)我有这个:
Dim strFind As String
Dim rngFind As Range
Dim i As Integer
strFind = Sheets("Instructions").Range("E56").Value
Set rngFind = Sheets("Forecast").Cells.Find(What:=strFind, LookAt:=xlPart)
check if value is found
Do While Not rngFind Is Nothing
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
Loop
End If
这可以完美地引用单元格 C53(这是用户输入单词/短语的位置),然后转到“预测”表并删除单词/短语所在的列以及右侧的后续列,直到下一个填充的列。但是,我需要它再做两件事。
- 目前它只找到一次这个词,即使它可能多次存在于工作表中,我需要它来删除所有这些——基本上它“找到下一个”而不是“找到所有”。我正在考虑创建一个循环,以便一旦找到一个并删除该列,它就会再次找到相同的单词并删除该列(以及它旁边的后续空行),直到该单词不再出现在工作表上。
- 其次,我需要它来找到多个单词/短语。现在它引用单元格'C53',但我需要它然后继续到'C54'并做同样的事情,然后是'C55',然后是'C56'等等。直到它到达一个只有一个'的单元格0' 在里面。问题是,C 列中的列表大小总是不同的(但总是从 C53 开始)。一旦它达到“0”(不是空白单元格),我需要它停止。
任何有关此“循环启动”问题的帮助将不胜感激!我对 VBA 很陌生,我刚刚被赋予了这样做的任务。非常感谢!