动态启动时自动填充列

时间:2017-02-21 12:19:39

标签: excel vba excel-vba autofill

我正在尝试编写一个代码,将工作表中的最后一列自动填充到右侧x次。

我有代码,它将获取最后一列:

 With ActiveSheet
 LC = .Cells(3, .Columns.Count).End(xlToLeft).Column
 End With
 Columns(LC).Select

以及如果我指定哪些特定列

,将自动填充的代码
 Selection.AutoFill Destination:=Columns("BE:BQ"), Type:=xlFillDefault

我正在努力的是如何更换列" BE:BQ"使用与原始最后一列(LC)链接的所需代码。 理想情况下,我希望自动填充以添加10个新列。你有什么建议吗?

理想情况下,我希望代码循环遍历工作簿中的所有工作表 - 但这对我来说可能有点先进!

非常感谢您提前。

更新

感谢您的建议评论。我修改了如下代码。这首先看起来很完美。但是,我遇到了两个问题。

问题1 - 在某些工作表上填充第3行中的日期字段时未填写。它只是复制日期与最后一行完全相同(即01/06/2017,但显示为Jun-17)。我想这一次填补一个月。

问题2 - 在第2行中有一个日期,它是过去一个月的最后一天。这是当前手动输入的,但是由于我已经开发了宏,我希望将其更改为等于下面单元格中的日期减去1天的公式。我试着用下面的公式做到这一点,但它完全出错了!

sht.Cells(2, LC).Formula = "=" & Cells(3, LC) & "-1"

关于如何解决这两个问题的任何建议都将非常感激。

2 个答案:

答案 0 :(得分:0)

Dim LC As Integer
Dim LR As Long

ActiveSheet.Unprotect

With ActiveSheet
    LC = .Cells(3, .Columns.Count).End(xlToLeft).Column
    LR = .Cells(Rows.Count, LC).End(xlUp).Row
End With

Range(Cells(1, LC), Cells(LR, LC)).Select

Selection.AutoFill Destination:=Range(Cells(1, LC), Cells(LR, LC + 10)),Type:=xlFillDefault

答案 1 :(得分:0)

试试这个。我不确定A2位,因为代码表明自动填充从第3行开始,但是如果它也应该被包含在代码中,则可以用2代替3。

Sub x()

Dim LC As Long, LR As Long, ws As Worksheet

For Each ws In Worksheets
    With ws
        LC = .Cells(3, .Columns.Count).End(xlToLeft).Column
        LR = .Cells(.Rows.Count, 1).End(xlUp).Row

        .Range(.Cells(3, LC), .Cells(LR, LC)).AutoFill Destination:=.Range(.Cells(3, LC), .Cells(LR, LC + 10)), Type:=xlFillDefault
        .Cells(3, LC).AutoFill Destination:=.Cells(3, LC).Resize(, 10), Type:=xlFillMonths
        .Range("A2").Formula = "=A3-1"
    End With
Next ws

End Sub