макрос excel vba удалить столбец на основе содержимого ячейки

Я пытаюсь написать макрос для удаления столбцов из электронной таблицы, если они имеют определенный контент. Все данные находятся в первой строке переменной длины. Я думаю, что проблема может быть связана с моим выбором диапазона. Я продолжаю получать индекс вне диапазона, когда пытаюсь выполнить поиск. Любой совет будет принят во внимание. :)

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

person user2664304    schedule 08.08.2013    source источник
comment
Какая строка дает вам ошибку? Ваш код работает и для меня. Однако одно слово предостережения! Поставьте галочку, чтобы поймать, если пользователь нажимает OK в поле ввода, ничего не вводя. В противном случае ваш код войдет в бесконечный цикл, что приведет к сбою Excel!   -  person Siddharth Rout    schedule 08.08.2013


Ответы (1)


Ваш код отлично работает в моем VBE. Я просто добавил следующее:

SrchStr = Trim(SrchStr)

Для этой ошибки веб-сайт MSDN предлагает использовать For Next вместо Do While, чтобы не указывать элементы индекса.

person RestitutorOrbis    schedule 08.08.2013
comment
Хм, ошибка на Set c = SrchRng.... Я должен упомянуть, что я использую Excel 2007 SP2. - person user2664304; 08.08.2013
comment
А, я исправил. Я избавился от 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 Спасибо за предложения! :) Извините, это не позволит мне ответить, и я не знаю, как получить код для форматирования в комментарии. - person user2664304; 08.08.2013
comment
Кроме того, чтобы показать свой код, нажмите пробел 4 раза, чтобы он отображался как код. Кроме того, очень полезно кратко просмотреть страницу «О нас». - person RestitutorOrbis; 09.08.2013