Excel VBA - необходимо получить переменный размер строк - PullRequest
0 голосов
/ 06 марта 2019

Новое в VBA - Записан макрос ниже, и каждый раз, когда я запускаю его, он всегда выбирает 309 строк. Я хочу, чтобы строки были текучими (пример: может быть 400 строк, может быть 10 в зависимости от данных.

 Columns("H:H").Select
    `Selection.Style = "Comma"
    Range("I2").Select
    Selection.EntireColumn.Insert
    Range("H1").Select
    Selection.Copy
    Range("I1").Select
    ActiveSheet.Paste
    Range("I2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=IF(RC[-3]=""C"",RC[-1]*-1,RC[-1])"
    Range("I2").Select
    Selection.AutoFill Destination:=Range("I2:I309")
    Range("I2:I309").Select
    Columns("I:I").Select
    Selection.Copy
    Range("I1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("H4").Select
    Application.CutCopyMode = False
    Selection.EntireColumn.Delete
    Range("L7").Select
    Selection.EntireColumn.Insert
    Range("K1").Select
    Selection.Copy
    Range("L1").Select
    ActiveSheet.Paste
    Range("L2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],4)"
    Range("L3").Select
    ActiveWindow.SmallScroll Down:=-12
    Range("L2").Select
    Selection.AutoFill Destination:=Range("L2:L309")
    Range("L2:L309").Select
    Columns("L:L").Select
    Selection.Copy
    Range("L1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("K2").Select
    Application.CutCopyMode = False
    Selection.EntireColumn.Delete
    Range("M23").Select
    Sheets.Add After:=ActiveSheet
    Sheets("Sheet1").Select
    Range("K2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("C2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Sheet1").Select
    Range("C281").Select
    Selection.End(xlUp).Select
    Range("D2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet2").Select
    Range("D2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("D2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.NumberFormat = "m/d/yyyy"
    Range("C2:D2").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Range("$C$2:$D$309").RemoveDuplicates Columns:=Array(1, 2), _

1 Ответ

2 голосов
/ 06 марта 2019

Здесь слишком много, чтобы я мог перевести весь этот код для вас, но я верю, что слово, которое вы ищете здесь, это dynamic .Чтобы заменить 309 динамическим номером последней строки, вам нужно изменить:

Selection.AutoFill Destination:=Range("I2:I309")

на

Selection.AutoFill Destination:=Range("I2:I" & Cells(Rows.Count, "I").End(xlUp).Row)

и

Selection.AutoFill Destination:=Range("L2:L309")

на

Selection.AutoFill Destination:=Range("L2:L" & Cells(Rows.Count, "L").End(xlUp).Row)

и так далее, и так далее.Также, как сказал @ cybernetic.nomad, вам следует прочитать ссылку, которой он с вами поделился.

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