1

Тема: Выбор последней строки в Excel

Добрый день!

Необходимо находить последнюю ячейку в столбце (А1). На данный момент рабочий вариант есть (поиск пустой ячейки), но хотелось бы узнать о существовании более быстрого варианта, потому что при наличии > 5000 строк, скрипт выполняется очень долго.

Мой код:


'********** Создаем объект Excel ****************************************************
  		Set xlApp = CreateObject("Excel.Application")
		
		'********** Устанавливаем видимость объекта *****************************************
		xlApp.Visible = true
		
		'*********** Назначаем переменные для открытия книги, листа, объекта ****************
		Set xlWB = xlApp.Workbooks.Open(FileName)
		Set xlSheet = xlWB.Worksheets(1)
		Set obj = ActiveDocument.GetSheetObject(ChartName) 
		
		'*********** Активируем лист ********************************************************
		xlSheet.Activate
	
		'*********** Ищем последнюю заполненую ячейку и переходим на пустую *****************
		
		While Not (Isempty(xlSheet.Cells(iRow, 1))) '******************Хотелось бы избавиться от этогу куска кода!!!!!!!.
			iRow = iRow+1
		Wend
		
		'*********** Обращаемся к таблице из приложения и копируем её в буфер ***************
		
		Set txt1 = ActiveDocument.GetSheetObject("CH27")
		txt1.CopyTableToClipboard true
		
		'*********** Выбираем пустую ячейку и вставляем из буфера таблицу *******************
		iRow=1
		xlSheet.Cells(iRow,1).EndRow.Select'xlSheet.Cells(iRow,1).Select
		xlSheet.Paste

2

Re: Выбор последней строки в Excel

xlSheet.Cells.SpecialCells(11).Address

но есть но.

Я конечно далек от мысли... (с)

3

Re: Выбор последней строки в Excel

Уже понял что за но. SpecialCells(11) выполняет роль сочетания клавиш Ctrl+End и переходит в конец таблицы, а не в ячейку "A" &

4

Re: Выбор последней строки в Excel

xlSheet.Cells.Item(1,1).SpecialCells(11).Address

но, но останется - сделайте оформление ячейке ниже нижней и получите её адрес, а не последней заполненной, для последней истинно заполненной нужно пользоваться

MsgBox xlSheet.Cells.Item(Application.WorksheetFunction.Min(xlSheet.Cells.SpecialCells(11).Row + 1, xlSheet.Cells.Rows.Count), 1).End(-4162).Row

хотя в большинстве достаточно будет спешелкелс

Я конечно далек от мысли... (с)

5

Re: Выбор последней строки в Excel

Забыл отписаться)

Все очень просто:


LastRow=xlSheet.Cells(1,1).SpecialCells(11).row
		xlSheet.Cells(LastRow+1,1).select
		xlSheet.Paste

Спасибо за помощь!!!!!!!