【发布时间】:2013-07-26 13:56:52
【问题描述】:
我一直在处理 Excel 工作表,我在其中使用宏基本上运行“查找功能”以在单独的工作表上查找单词/短语,然后删除该单词/短语所在的整个列. 目前,感谢我的上一篇文章 (Is there a way to use the find function with changing, user inputted values in an excel macro?) 我有这个:
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 很陌生,我刚刚被赋予了这样做的任务。非常感谢!
【问题讨论】: