2015-05-29 4 views
3

У меня проблема с обновлением UsedRange каждый раз, когда я его использую. У меня есть это в моем коде:VBA: UsedRange Не обновляется правильно

Sheets("Campaign").UsedRange 'Refresh UsedRange 
LastRow = Sheets("Campaign").UsedRange.Rows.Count 

Это проверка последней строки, используемой на конкретном рабочем листе. Теперь он работает и выводит правильное целое число при первом запуске, но не обновляется, если вы удаляете строки из столбца с наибольшим количеством строк. Дело в том, что оно обновляется, если вы добавляете больше строк в этот конкретный столбец.

Вот мой фактический код:

Sub CMPGN_MCRO() 

    Sheets("Campaign").UsedRange 'Refresh UsedRange. 
    LastRow = Sheets("Campaign").UsedRange.Rows.Count 

    Dim RangeString As String 
    Worksheets("Campaign").Select 
    Range("A1:A" & LastRow).Select 
    RangeString = Selection.Address 

    Range("A1").End(xlToRight).Select 
    RangeString = RangeString & ":" & Selection.Address 'Selects all the data in Campaign Worksheet. 

    Dim C As Range 
    i = 2 
    For Each C In Worksheets("Campaign").Range(RangeString).Cells 
     If Mid(C.Value, 6, 2) = "AC" Then 
     Worksheets("Sheet3").Range("A" & i) = C.Value 'Echo out all the filtered data and output it to another worksheet. 
     i = i + 1 
    End If 
    Next 
MsgBox (LastRow) 
End Sub 

PS: Я использовал MsgBox эхо из целого числа, что usedRange производит.

+0

Удаленный тег VB.NET. VB.NET <> VBA –

ответ

3

Try комбинируя команду UsedRange с этим:

ActiveCell.SpecialCells(xlCellTypeLastCell).Row 

Кодовые SpecialCells (xlCellTypeLastCell) относится к последней использованной ячейки на листе. В Excel аналогичная команда - {Ctrl End}.

В коде:

Sheets("Campaign").UsedRange 'Refresh UsedRange 
LastRow = Sheets("Campaign").Range("A1").SpecialCells(xlCellTypeLastCell).Row 

Вещь отметить, что иногда просто удаление данных (Del ключ) не достаточно. Попробуйте удалить все ячейки ({Ctrl -} или {Щелкните правой кнопкой мыши Delete}).

Другой код, который работает, если ваш рабочий лист не заполнен до последней строки:

LastRow = cells(Sheets("Campaign").Range("A1").SpecialCells(xlCellTypeLastCell).Row,1).offset(1,0).end(xlUp).row 

Что это: Найти последнюю ячейку из ячейки A1, затем вниз один, чтобы убедиться, что мы находимся в пустую ячейку , затем используйте ctrl-up, чтобы найти последнюю ячейку, заполненную данными. Немного беспорядочно, но работает, даже если в столбце A. нет некорректно удаленных ячеек.

+0

Не работает для меня, я удалил все данные на листе кампании и все еще выдал старшее число строк, которое составляет 179. – ayasocool

+1

Хмм. Хорошо, тупые вопросы: как вы удалили данные? Вы уверены, что удалили их все? Попробуйте вручную удалить все ячейки и снова запустите код. Только спрашиваю, потому что он работает правильно для меня, поэтому я не могу воспроизвести проблему. – vacip

+0

Ctrl A + Удалить, вот что я сделал. – ayasocool

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