我有2个工作表,Data&转换。
尝试使用此宏基于“数据”最后一行(可能超过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
然而,我失败了: -
错误消息: -
调试的: -
有人能帮助我吗?
答案 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