2013-09-23 5 views
3

Я пытаюсь создать macro, который выбирает диапазон последней строки и последнего столбца.Excel VBA выберите диапазон в последней строке и столбце

E.g. Я хочу выбрать 1, 2, 3, 4 из моей таблицы, а затем удалить выделение.

данных:

John | 10 | 10 | 10 
Smith | 5 | 5 | 5 
Fred | 8 | 8 | 8 
1  | 2 | 3 | 4 

Вот мой код, он выбирает только последнюю строку на столбец. (выбирает 1 и удаляет его). Мне нужно выбрать 1 - 4 и удалить всю строку.

Range("A" & Rows.Count).End(xlUp).Select 
Selection.Delete Shift:=xlUp 

ответ

12

Это то, что вы пытаетесь? Я прокомментировал код, чтобы у вас не было проблем с его пониманием.

Sub Sample() 
    Dim ws As Worksheet 
    Dim lRow As Long, lCol As Long 
    Dim rng As Range 

    '~~> Set this to the relevant worksheet 
    Set ws = [Sheet1] 

    With ws 
     '~~> Get the last row and last column 
     lRow = .Range("A" & .Rows.Count).End(xlUp).Row 
     lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 

     '~~> Set the range 
     Set rng = .Range(.Cells(lRow, 1), .Cells(lRow, lCol)) 

     With rng 
      Debug.Print .Address 
      ' 
      '~~> What ever you want to do with the address 
      ' 
     End With 
    End With 
End Sub 

КСТАТИ Я предполагаю, что LastRow является одинаковым для всех строк и то же самое относится и к столбцам. Если это не так, вы можете использовать .Find, чтобы найти последнюю строку и последний столбец. Вы можете увидеть THIS

+0

Я поставил 'Selection.Delete сдвига : = xlUp' внутри блока с rng кода, но он не удаляет выбор – user2273278

+0

Это не будет;) Попробуйте '.Delete Shift: = xlUp' После инструкции debug. –

+0

Он все еще не работает – user2273278

3

Простейшая модификация (с кодом в вашем вопросе) заключается в следующем:

Range("A" & Rows.Count).End(xlUp).Select 
    Selection.EntireRow.Delete 

Что может быть упрощена:

Range("A" & Rows.Count).End(xlUp).EntireRow.Delete 
Смежные вопросы