永久更改variables号码VBA

我有一个button,它复制列n&i并粘贴在n + 3和i + 3上,但是在列n和我需要更改为n + 3和i + 3之后。 我试图通过在代码的末尾添加n = n + 3 i = i + 3来做到这一点,但它不起作用。

 Sub Macro1() Dim n As Integer Dim i As Integer n = 22 i = 24 Range(Columns(n), Columns(i)).Copy Range(Columns(n + 3), Columns(i + 3)).PasteSpecial xlPasteAllMergingConditionalFormats Columns(n + 3).ClearContents n = n + 3 i = i + 3 End Sub 

另一种select是将variables声明为Static

 Sub Macro1() Static n As Integer Static i As Integer If n = 0 Then n = 22 If i = 0 Then i = 24 Range(Columns(n), Columns(i)).Copy Range(Columns(n + 3), Columns(i + 3)).PasteSpecial xlPasteAllMergingConditionalFormats n = n + 3 i = i + 3 End Sub 

请注意,如果您这样做,则需要在第一次运行macros时添加“初始化代码”。

将variables分配给单元格。 例如,您将n的值设置为单元格A1,将i的值设置为单元格B1。

 Sub Macro1() Dim n As Integer Dim i As Integer n = Worksheets("Sheet1").Range("A1").Value i = Worksheets("Sheet1").Range("B1").Value Range(Columns(n), Columns(i)).Copy Range(Columns(n + 3), Columns(i + 3)).PasteSpecial xlPasteAllMergingConditionalFormats Columns(n + 3).ClearContents n = n + 3 i = i + 3 Worksheets("Sheet1").Range("A1").Value = n Worksheets("Sheet1").Range("B1").Value = i End Sub 

你可以试试这个

 Sub Macro1() Dim n As Integer Dim i As Integer With ActiveSheet.UsedRange n = WorksheetFunction.Min(.Columns(.Columns.Count).Column - 2, 22) End With i = n + 2 Range(Columns(n), Columns(i)).Copy Range(Columns(n + 3), Columns(i + 3)).PasteSpecial xlPasteAllMergingConditionalFormats Columns(n + 3).ClearContents End Sub