Vba 更改录制的自动填充宏以删除对activecell的引用

Vba 更改录制的自动填充宏以删除对activecell的引用,vba,excel,Vba,Excel,我正在尝试清理录制的宏,以便在未来几个月运行它时,它不太容易出错(我正在尝试自动生成月度报告)。我听说对Activecell之类的引用可能会很危险,所以我想确定一下 要求大纲。我使用多个公式从另一张工作表中获取内容,并在另一张工作表中填写到所述数据的末尾 Sub AnswesComboFill() Range("A2").Select ActiveCell.FormulaR1C1 = "=EvalTableData!RC[2]" Range("B2").Select

我正在尝试清理录制的宏,以便在未来几个月运行它时,它不太容易出错(我正在尝试自动生成月度报告)。我听说对Activecell之类的引用可能会很危险,所以我想确定一下

要求大纲。我使用多个公式从另一张工作表中获取内容,并在另一张工作表中填写到所述数据的末尾

Sub AnswesComboFill()
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=EvalTableData!RC[2]"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=EvalTableData!RC[4]"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=EvalTableData!RC[1]"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(EvalTableData!RC[-3],AnswersData!C[-3]:C[2],6)"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(EvalTableData!RC[-4],AnswersData!C[2]:C[7],6)"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(EvalTableData!RC[-5],AnswersData!C[7]:C[12],6)"
    Range("G2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(EvalTableData!RC[-6],AnswersData!C[12]:C[17],6)"
    Range("H2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(EvalTableData!RC[-7],AnswersData!C[17]:C[22],6)"
    Range("A2:H2").Select
    Selection.AutoFill Destination:=Range("A2:H2000"), Type:=xlFillDefault
    Range("A2:H2000").Select
    Selection.NumberFormat = "General"
End Sub
问题:

我可以得到一些改变它的方向吗,这样单元格引用是静态的

我提到的一些单元格被格式化为文本,因此最后一行被格式化为General。即使我将格式更改为general,内容仍然保持为文本(例如A2只会说“=EvalTableData!A2”,而不是内容)。有没有办法在我更改格式后刷新内容

我希望填充范围是动态的,而不是公式中的A2:H2000。我目前在另一个宏中有一个range.lastcell样式的公式,但在本例中它不起作用,因为我引用的是另一个工作表。我也能得到一些帮助吗?

代替

Range("A2").Select
ActiveCell.FormulaR1C1 = "=EvalTableData!RC[2]"
使用

使此范围成为动态范围

Range("A2:H2000").Select
Selection.NumberFormat = "General"
成功

Range(Range("A2"),Range("H2").end(xldown)).NumberFormat = "General"
为解决文本问题,应将公式更正为

ActiveCell.FormulaR1C1 = "='EvalTableData'!RC[2]"

您是否尝试过在启用/不启用
使用相对引用
按钮的情况下录制?(就在
录制宏
按钮下方)还可以看看感谢堆。这里有一些很好的基础知识。谢谢!这很有帮助。我知道这是一个简单的问题,但我对这个问题太陌生了,以至于我不知道该用什么术语来搜索一个对我有用的答案。我认为这个公式对我有用,但我对各种单元格的格式有问题。“我的查找”单元格及其查找范围的格式均为“常规”,但格式不同。其中一个的日期看起来像日期,另一个的日期格式为数字字符串。这会导致VLOOKUP中断(我对您列出的公式进行了修改,最后加上“、FALSE”),例如,我的查找值为“BobSmith10/05/2018”,但在我的查找数组中,相同的值显示为“BobSmith43182.52162”。续:下一条评论我是否可以在宏中插入一行以返回BobSmith10/05/2018来修复此问题?(目前它是一个“=连接”公式编号,因为宏只是更改公式栏中的值。这与您自己键入公式相同,只是RC[2]是用于动态分配单元格范围的约定。您应该在查找本身中使用
Date
datevalue
excel公式
ActiveCell.FormulaR1C1 = "='EvalTableData'!RC[2]"