Excel Macro Удалить отсортированные строки - PullRequest
0 голосов
/ 13 февраля 2019

У меня проблема с написанием макроса, в котором я подытоживаю данные, копирую эти данные на другой лист, затем фильтрую по столбцу и удаляю эти строки.Проблема в том, что диапазон данных, которые мне нужно удалить, будет меняться при каждом запуске макроса.Вот пример того, что у меня сейчас:

Range("A2").Select
    Columns("A:C").Select
    Selection.Subtotal GroupBy:=1, Function:=xlCount, TotalList:=Array(3), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
        Range("A2:C2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
        Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Range("$A$1:$C$396").AutoFilter Field:=2, Criteria1:="<>"
    Rows("2:394").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$C$42").AutoFilter Field:=2
    Range("A22").Select
    Selection.End(xlDown).Select
    Rows("42:42").Select
    Selection.Delete Shift:=xlUp

Any help would be greatly appreciated. 

1 Ответ

0 голосов
/ 13 февраля 2019

Итак, вместо этого:

"$A$1:$C$396"
"$A$1:$C$42"

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

Dim sht As Worksheet
Dim LastRow As Long

Set sht = ActiveSheet

'Ctrl + Shift + End
  LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

И.,.

Dim sht As Worksheet
Dim LastColumn As Long

Set sht = ThisWorkbook.Worksheets("Sheet1")

'Using UsedRange
  sht.UsedRange 'Refresh UsedRange
  LastColumn = sht.UsedRange.Columns(sht.UsedRange.Columns.Count).Column

Вам нужна дополнительная помощь в этом или вы можете понять это отсюда?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...