2014-02-17 4 views
0

Я создал таблицу, которая создает список инвентаря. Макрос, который я пишу, открывает страницу поиска внутри сети, вводит номер каталога в строке a (не показан на изображении). и возвращает информацию на лист excel. Когда он входит в местоположения (RIG), он создает заголовок в строке 2. Я создал второй макрос, который удаляет неактивные местоположения. После этого фильтра у меня остается более чистый список, но я хочу удалить заголовок в строке 2, у которого больше нет информации ниже (например, столбцы AH, AI, AJ и т. Д.). Я знаю, что могу найти последний использованный столбец рабочего листа, но то, что я хочу сделать, - это четкое форматирование, граница и содержимое в строке2 всякий раз, когда строка3 для прокрутки пуста.Как исключить конкретную строку из функции «Найти последнюю колонку»

Есть ли способ настроить это, чтобы исключить строку2 из поиска?

Dim LastColumn As Integer 

Set LastColumn = Cells.Find(What:="*", After:=[A1], _ 
SearchOrder:=xlByColumns, _ 
SearchDirection:=xlPrevious).Column 

Cells(2,LastColumn).Select 
ActiveCell.Offset(0,1) 
Do 
If not ActiveCell = "" Then 
    ActiveCell.EntireColumn.Delete(xlToLeft) 
    DoEvents 
Else 
    Exit Do 
End If 
Loop 

My Search SHeet

Финальный код после включения Студенты ответа Гари. Спасибо!!

'Find last used column below header row 
Dim wf As WorksheetFunction 
Dim N As Long 
Dim rCol As Range 

Set wf = Application.WorksheetFunction 
Cells(1, 1).EntireRow.Hidden = True 
Cells(2, 1).EntireRow.Hidden = True 

Do 
For N = Columns.Count To 1 Step -1 
    Set rCol = Cells(1, N).EntireColumn 
    If wf.Subtotal(103, rCol) > 0 Then 
     Exit Do 
    End If 
Next 
Loop 

Cells(1, 1).EntireRow.Hidden = False 
Cells(2, 1).EntireRow.Hidden = False 

'Trim header row to used columns only 
Cells(2, N).Select 
ActiveCell.Offset(0, 1).Select 

Do 
    If Not ActiveCell = "" Then 
     ActiveCell.EntireColumn.Delete (xlToLeft) 
     DoEvents 
    Else 
     Exit Do 
    End If 
Loop 

ответ

1

Просто исключить строку из рассмотрения:

Sub FindLastColumn() 
    Dim BadRow As Long, wf As WorksheetFunction 
    Dim N As Long, rCol As Range, i As Long 
    BadRow = 7 
    i = 103 
    Set wf = Application.WorksheetFunction 
    Cells(BadRow, 1).EntireRow.Hidden = True 
    For N = Columns.Count To 1 Step -1 
     Set rCol = Cells(1, N).EntireColumn 
     If wf.Subtotal(i, rCol) > 0 Then 
      MsgBox "The last used column is: " & N 
      Cells(BadRow, 1).EntireRow.Hidden = False 
      Exit Sub 
     End If 
    Next N 
    Cells(BadRow, 1).EntireRow.Hidden = False 
End Sub 
+0

Отлично, я не знал о «.entirerow.hidden = true». Это скроет ее от видимости на листе, будет ли это означать, что функция поиска не сможет ее увидеть? – TPJ87

0

Так в основном от того, что я могу понять, вы пытаетесь сделать поиск и исключить некоторые строки из поиска? Почему бы не использовать двойной цикл?

for i 1 to columns you want 
    for j = 1 to rows you want 
     if j <> row you don't want 
      'add code here 
     end if 
    nextj 
next i 
+0

, поскольку длина столбца изменится. Я пытаюсь использовать функцию find, чтобы найти номер столбца, который вы хотите. – TPJ87

Смежные вопросы