簡體   English   中英

Excel VBA-需要獲取可變大小的行

[英]Excel VBA - Need to grab a variable size of rows

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), _

對於我來說,有太多事情要做,無法為您翻譯所有這些代碼,但是我相信您在這里尋找的單詞是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)

etcetera等。 就像@ cybernetic.nomad所說的那樣,您應該閱讀他與您共享的鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM