自动填充下一列VBA

时间:2016-06-24 18:54:49

标签: excel vba excel-vba

我在这里有一些代码可行,但我有一些麻烦让它连续多次工作。它的作用是用另一张表中的公式填充第一个空列。

Dim source As Worksheet
Dim destination As Worksheet
Dim EmptyColumn As Long
Dim LastRow As Long

Set source = Sheets("vlookup")
Set destination = Sheets("COMMIT")

LastColumn = destination.Cells(1,destination.Columns.Count).End(xlToLeft).Column
LastRow = Worksheets("COMMIT").Range("A:A").Rows.Count

If IsEmpty(destination.Range("A2")) = False Then
EmptyColumn = LastColumn + 1
destination.Cells(3, EmptyColumn).Formula = "=INDEX(PORT!$S$5:$S$4000,MATCH(COMMIT!$G3,PORT!$G$5:$G$4000,0))"
LastRow = ActiveSheet.UsedRange.Rows.Count
Range("AL3").AutoFill destination:=Range("AL3:AL" & LastRow) **'This is where I'm having issues'**
End If

我希望继续将索引公式放入下一个空列,但我只知道如何将它放入我设置的范围中,并且当我再次运行此宏时不会移动到下一列。 / p>

关于如何实现这一目标的任何想法?

感谢斯科特帮助我解决这个问题!

现在我的代码中出现了另一个问题。

Set cellSource = Worksheets("COMMIT").Range(Cells(1, LastColumn).Address)
Set cellTarget = Worksheets("COMMIT").Range(Cells(1, LastColumn), Cells(1, EmptyColumn))
If detntn.Range("A2") <> "" Then
cellSource.AutoFill destination:=cellTarget, Type:=xlFillDefault
End If

现在我正试图从&#34;提交&#34;复制公式。工作表并将其粘贴到第一个空列的第一个单元格中。由于某种原因,此代码无效。想知道是否有人可以嗅出原因。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

部分问题是您为变量使用了保留字。查看自动填充功能,它使用目的地。

然后我们可以使用Cells()代替Range来引用最后一列。

Dim source As Worksheet
Dim detntn As Worksheet
Dim EmptyColumn As Long
Dim LastRow As Long

Set source = Sheets("vlookup")
Set detntn = Sheets("COMMIT")

LastColumn = detntn.Cells(1, detntn.Columns.Count).End(xlToLeft).Column
LastRow = Worksheets("COMMIT").Range("A:A").Rows.Count

If detntn.Range("A2")<>"" Then
    EmptyColumn = LastColumn + 1
    detntn.Cells(3, EmptyColumn).Formula = "=INDEX(PORT!$S$5:$S$4000,MATCH(COMMIT!$G3,PORT!$G$5:$G$4000,0))"
    LastRow = ActiveSheet.UsedRange.Rows.Count
    detntn.Cells(3, EmptyColumn).AutoFill destination:=detntn.Range(detntn.Cells(3, EmptyColumn), detntn.Cells(LastRow, EmptyColumn))
End If