自动填充目标VBA

时间:2017-02-15 09:08:50

标签: excel vba excel-vba

我有2个工作表,Data&转换。

enter image description here

尝试使用此宏基于“数据”最后一行(可能超过100行)进行“转换”自动填充: -

Public Sub Call_Generate_Data()


    Sheets("Convert").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(Data!RC[4],Links!R1C1:R14C2,2,FALSE)"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=IF(Data!RC[12]="""",""1/1/2014"",Data!RC[12])"
    Range("B3").Select
    Selection.AutoFill Destination:=Range("A2:B" & Sheets("Data").Range("D" & Rows.Count).End(xlUp).Row)
    Sheets("Data").Select
    Range("B3").Select

End Sub

然而,我失败了: -

enter image description here

错误消息: -

enter image description here

调试的: -

enter image description here

有人能帮助我吗?

3 个答案:

答案 0 :(得分:4)

我建议不要以这种方式使用Selection,但如果你录制了一个宏,那么你就会在录音中使用它。

您可以更改此部分:

Range("B3").Select
Selection.AutoFill Destination:=Range("A2:B" & Sheets("Data").Range("T" & Rows.Count).End(xlUp).Row)

要:

Range("A2:B2").Select  '<-- only part being changed
Selection.AutoFill Destination:=Range("A2:B" & Sheets("Data").Range("T" & Rows.Count).End(xlUp).Row)

或者,如果没有Selection,您只需要用以下代码替换这两行:

Range("A2:B2").AutoFill Destination:=Range("A2:B" & Sheets("Data").Range("T" & Rows.Count).End(xlUp).Row)

答案 1 :(得分:1)

尝试一下。

Sub Autofill()
'universal autofill 
'suggested shortcut Ctrl+Shift+D

Dim col As Long
Dim row As Long
Dim myrange As Range

col = ActiveCell.Column
If ActiveCell.Column <> 1 Then
    row = Cells(Rows.Count, ActiveCell.Column - 1).End(xlUp).row
    Else
    row = Cells(Rows.Count, ActiveCell.Column + 1).End(xlUp).row
End If

If ActiveCell.row >= row Then Exit Sub

Set myrange = Range(Cells(ActiveCell.row, ActiveCell.Column), Cells(row, col))
ActiveCell.Autofill Destination:=myrange

End Sub

答案 2 :(得分:0)

我不确定这是否是您需要的确切答案,但我希望它可以帮助您获得答案!我避免使用&#34;选择&#34; s因为它们没用。然后,我检查哪个是最后一个包含D列数据和自动填充B3公式的单元格,直到计算出的值。

Public Sub Call_Generate_Data()

Sheets("Convert").Range("B2").FormulaR1C1 = "=VLOOKUP(Data!RC[4],Links!R1C1:R14C2,2,FALSE)"

Sheets("Convert").Range("B3").FormulaR1C1 = "=IF(Data!RC[12]="""",""1/1/2014"",Data!RC[12])"

LastRow = Sheets("Data").Cells(Rows.Count, 4).End(xlUp).Row


Range("A2:B2").AutoFill Destination:=Range("A2:B" & LastRow & "")

END sub