Следующий код должен делать то, что вы хотите.Примечание. Я ничего не выбираю, поскольку это замедляет работу, что не дает никаких преимуществ.
Dim ColLast as Long
Dim ValueColLast as String
Dim HeadColLast as String
With Sheets(xxxxx)
ColLast = .Cells(2,Columns.Count).End(xlToLeft).Column
ValueColLast = .Cells(2, ColLast).Value
HeadColLast = .Cells(1,ColLast).Value
End With
Cells(Row, Column)
относится к ячейке, идентифицируемой строкой и столбцом в активной рабочей таблице.Ряд должен быть числом.Столбец может быть числом (например, 1 или 104) или идентификатором столбца (например, «A» или «CZ»)
.Cells(Row, Column)
адресует ячейку, указанную в строке и столбце на листе, указанном в операторе With,Обратите внимание на начальную точку.
.Cells(2,Columns.Count)
указывает на последнюю ячейку в строке 2, начиная с Columns.Count
, учитывая количество столбцов на листе для текущей версии Excel.`Rows.Count
делает то же самое для строк.
Предполагая, что .Cells(2,Columns.Count)
пусто, .Cells(2,Columns.Count).End(xlToLeft)
находит следующую ячейку в указанном направлении со значением.Это VBA-эквивалент Ctrl + LeftArrow.xlToRight
, xlUp
и xlDown
позволяют вам двигаться в других направлениях..Cells(Rows.Count,"A").End(xlUp)
дает последнюю использованную строку в столбце A.
.Cells(2,Columns.Count).End(xlToLeft).Column
дает номер последнего использованного столбца в строке 2.
ValueColLast = .Cells(2, ColLast).Value
устанавливает ValueColLast в значение последнейячейка в строке 2. Я определил ValueColLast как строку, потому что, если бы я предположил, что это число и определил его как Long, я получил бы ошибку, если бы его не было.
HeadColLast = .Cells(1,ColLast).Value
устанавливает значение HeadColLast в значениев строке 1.
Надеюсь, все это имеет смысл.