2017-02-15 117 views
2

我有2个工作表,数据&转换。自动填充目标VBA

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

有人能帮助我吗?

+0

要检查最后一行的工作表“数据”中的哪一列?我认为T但你能证实吗? –

+0

错字,它是D.我修改宏。要检查的列是D. – Bob

+0

好的!现在另一个问题......你想自动填充哪个公式? B2和B3细胞中的公式? –

回答

3

我建议不要以这种方式使用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) 
+0

不要忘记完全限定'Range(“T”&Rows.Count)'内的'Rows.Count''与工作表 –

+0

谢谢,它现在可以工作。 – Bob

0

我我不确定这是否是您需要的确切答案,但我希望它能帮助您获得答案!我避免使用“select”,因为它们没用。然后我检查了哪一个是最后一个有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