Получение фактического использования диапазона

У меня есть рабочий лист Excel с кнопкой.

Когда я вызываю функцию usedRange (), возвращаемый диапазон включает в себя часть кнопки.

В любом случае, я могу просто получить фактический диапазон использования, содержащий данные?

5 Solutions collect form web for “Получение фактического использования диапазона”

Какая кнопка, ни управление формами, ни элемент управления ActiveX не должны влиять на используемый диапазон.

Это известная проблема, что excel не очень хорошо отслеживает использованный диапазон. Любая ссылка на используемый диапазон через VBA приведет к сбросу значения в текущий используемый диапазон. Поэтому попробуйте выполнить следующую процедуру:

Sub ResetUsedRng() Application.ActiveSheet.UsedRange End Sub 

В противном случае у вас может быть некоторое форматирование, висящее вокруг. Попробуйте очистить / удалить все ячейки после последней строки.

Что касается вышеизложенного, см. Также:

Совет разработчика Excel

Другой способ найти последнюю использованную ячейку:

  Dim rLastCell As Range Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) 

Измените направление поиска, чтобы найти первую использованную ячейку.

Readify сделал очень полный ответ. Тем не менее, я хотел добавить инструкцию End , вы можете использовать:

Найдите последнюю использованную ячейку перед пробелом в столбце:

 Sub LastCellBeforeBlankInColumn() Range("A1").End(xldown).Select End Sub 

Найдите самую последнюю использованную ячейку в столбце:

 Sub LastCellInColumn() Range("A" & Rows.Count).End(xlup).Select End Sub 

Найдите последнюю ячейку перед пробелом в строке:

 Sub LastCellBeforeBlankInRow() Range("A1").End(xlToRight).Select End Sub 

Найдите самую последнюю использованную ячейку в строке:

 Sub LastCellInRow() Range("IV1").End(xlToLeft).Select End Sub 

См. Здесь дополнительную информацию (и объяснение, почему xlCellTypeLastCell не очень надежна).

Вот пара функций для возврата последней строки и столбца рабочего листа на основе решения Reafidy выше.

  Function LastRow(ws As Object) As Long Dim rLastCell As Object On Error GoTo ErrHan Set rLastCell = ws.Cells.Find("*", ws.Cells(1, 1), , , xlByRows, _ xlPrevious) LastRow = rLastCell.Row ErrExit: Exit Function ErrHan: MsgBox "Error " & Err.Number & ": " & Err.Description, _ vbExclamation, "LastRow()" Resume ErrExit End Function Function LastCol(ws As Object) As Long Dim rLastCell As Object On Error GoTo ErrHan Set rLastCell = ws.Cells.Find("*", ws.Cells(1, 1), , , xlByColumns, _ xlPrevious) LastCol = rLastCell.Column ErrExit: Exit Function ErrHan: MsgBox "Error " & Err.Number & ": " & Err.Description, _ vbExclamation, "LastRow()" Resume ErrExit End Function 
 Public Sub FindTrueUsedRange(RowLast As Long, ColLast As Long) Application.EnableEvents = False Application.ScreenUpdating = False RowLast = 0 ColLast = 0 ActiveSheet.UsedRange.Select Cells(1, 1).Activate Selection.End(xlDown).Select Selection.End(xlDown).Select On Error GoTo -1: On Error GoTo Quit Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Activate On Error GoTo -1: On Error GoTo 0 RowLast = Selection.Row Cells(1, 1).Activate Selection.End(xlToRight).Select Selection.End(xlToRight).Select Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Activate ColLast = Selection.Column Quit: Application.ScreenUpdating = True Application.EnableEvents = True On Error GoTo -1: On Error GoTo 0 End Sub 

Я использую следующий код vba, чтобы определить весь диапазон используемых строк для рабочего листа, чтобы затем сократить выбранный диапазон столбца:

  Set rUsedRowRange = Selection.Worksheet.UsedRange.Columns( _ Selection.Column - Selection.Worksheet.UsedRange.Column + 1) 

Также работает наоборот:

  Set rUsedColumnRange = Selection.Worksheet.UsedRange.Rows( _ Selection.Row - Selection.Worksheet.UsedRange.Row + 1) 
  • Назначить сочетание клавиш для запуска процедуры
  • Ошибка13 в Excel VBA в файле данных
  • Ошибка: «Не удалось найти Installable ISAM»
  • Объединение данных ячейки в другие данные, если значения соответствуют
  • VBA Excel 2007 помогает ускорить код, чтобы скрыть строки
  • Загрузите файл csv в массив VBA, а не в Excel Sheet
  • Эффективный способ удаления всей строки, если ячейка не содержит «@»
  • Как скопировать данные из закрытых книг (их закрытие) в основную книгу с помощью VBA
  • Вызов VBA - API отображается в Excel
  • Код VBA для скрытия или отображения строк на основе значения ячейки
  • Вставка диапазона Excel в электронное письмо как изображение
  • Interesting Posts

    Как написать файл UTF-8 с Java?

    Отношения MongoDB: встраивание или ссылка?

    AngularJS. Когда выбрано атрибут ng-model, ng-selected не работает

    Как исправить ошибку «Ошибка синхронизации vcpu reg»?

    Как узнать, какая версия и версия Windows находится в файловой системе?

    Обработчики событий не являются streamобезопасными?

    Установка ROI с мышью из прямоугольника на видео

    Как я могу удалить «Позитивные поисковые объявления» из результатов поиска Google?

    Можем ли мы изменить размер изображения JPEG без декодирования и перекодировать его?

    Excel – отобразить текст, отличный от фактического значения?

    Статическая членная переменная C ++ и ее инициализация

    Как получить список всех файлов в облачном хранилище в приложении Firebase?

    Как проверить, содержит ли строка подстроку в Bash

    Список пользовательских значков на экране входа исчезла

    Конфигурация устройства Android для AOSP

    Давайте будем гением компьютера.