我在编程方面很陌生,而且我在这个领域是自学成才的(从互联网上复制大量代码行,主要来自这里!)。
我必须在新工作表中插入一些计算,并在它们之间插入一个vlookup公式,其中每个工作表中的表范围都会发生变化。由于我是代码编写的初学者,当我需要编写一些我用来录制宏的新内容时,我会修改它,直到达到目标。
在这种情况下,我记录了公式:
ActiveCell.FormulaR1C1 = "=VLOOKUP(R[16]C[-6],R[14]C[-6]:R[19]C[-5],2,TRUE)"
并将其修改为:
Dim n, i As Integer
Dim mCell As Range
n = 7
i = 13726
Set mCell = ActiveSheet.Cells(3 + n + 8, 2)
Cells(4, 15).Formula = "=VLOOKUP(" & Cells(3, 15) & ";" & Range(Cells(3 + n + 8, mCell.Column), Cells(i - 1, n + 1)) & ";2;TRUE)"
之前将其插入主宏。这是宏的简化(我修改了变量,在原始的变量中,它们将针对每个新工作簿进行更改)。
当我运行它时,我收到错误13 - 类型不匹配"。 寻找答案并做了很多"尝试&错误",我一次又一次地检查它,我改变了很多公式:
我已经编写了所有排列(或组合?:-P)并且所有这些排列(144种变体)都是子句运行,总是接收相同的错误类型。
所以,可能问题出在其他地方......我错过了什么? 非常感谢你!
答案 0 :(得分:2)
Excel以英语为导向,如果您使用西班牙语版本,则首先需要从Formula
更改为FormulaLocal
。在公式;
而不是,
中使用函数参数之间的分隔符时,您需要使用FormulaLocal
。
其次,你暗淡Dim n, i As Integer
,这意味着i As Integer
而n As Variant
,你需要定义Dim n As Long, i As Long
。
<强>代码强>
Cells(4, 15).FormulaLocal = "=VLOOKUP(" & Cells(3, 15).Address & ";" & Range(Cells(3 + n + 8, mCell.Column), Cells(i - 1, n + 1)).Address & ";2;TRUE)"