【问题标题】:excel vba macro delete column based on cell contentexcel vba宏根据单元格内容删除列
【发布时间】:2013-08-10 03:26:53
【问题描述】:

我正在尝试编写一个宏来从电子表格中删除具有特定内容的列。所有数据都在第一行,长度可变。我认为问题可能与我的范围选择有关。当我尝试进行搜索时,下标总是超出范围。任何意见,将不胜感激。 :)

Sub Disk_Firmware()
   Dim c As Range
   Dim SrchRng As Range
   Dim SrchStr As String
   Set SrchRng = ActiveSheet.Range("A1").EntireRow
   SrchStr = InputBox("Please enter a search string")
   Do
      Set c = SrchRng.Find(SrchStr, LookIn:=xlvalues)
      If Not c Is Nothing Then c.EntireColumn.Delete
   Loop While Not c Is Nothing
End Sub

【问题讨论】:

  • 哪一行给出了错误?您的代码也适用于我。不过要注意一点!如果用户在 InputBox 中按下OK 而不输入任何内容,请检查以捕获。否则您的代码将进入无限循环,导致 Excel 崩溃!

标签: excel vba


【解决方案1】:

您的代码在我的 VBE 中运行良好。我刚刚添加了以下内容:

SrchStr = Trim(SrchStr)

对于该错误,MSDN 网站建议您使用 For Next 而不是 Do While,以免指定索引元素。

【讨论】:

  • 嗯,它在Set c = SrchRng... 上失败了。我应该提到我正在运行 Excel 2007 SP2。
  • 啊,我修好了。我摆脱了 SrchRng 并切换到 For 循环。这有效:Sub Disk_Firmware() Dim c As Range Dim SrchRng As Range Dim SrchStr As String Set SrchRng = ActiveSheet.Range("A1").EntireRow SrchStr = Trim(InputBox("Please enter a search string")) For Each c in SrchRng.Cells If c.Value = SrchStr Then c.EntireColumn.Delete Next c End Sub 感谢您的建议! :) 抱歉,它不会让我“回答”,而且我不确定如何让代码在“评论”中格式化。
  • 另外,要显示您的代码,请按空格键 4 次,它会显示为代码。此外,简要浏览一下关于页面也很有帮助。
猜你喜欢
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多