【发布时间】:2017-11-24 13:39:28
【问题描述】:
我是编程新手,而且我是这个领域的自学成才(从互联网复制大量代码行,大部分来自这里!)。
我必须在新工作表中插入一些计算,并在它们之间插入一个 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 - 类型不匹配”。 寻找答案并做了很多“try&error”,我一次又一次地检查它,我改变了相当多的公式:
- 细胞(4,15)/范围(“O4”)
- .Formula / .FormulaLocal / .Value
- "=VLOOKUP(" / "=BUSCARV(" --> 我正在使用西班牙语的 excel,在工作表中,函数被翻译了
- Cells(3,15) 和 Range(...) / Cells(3,15).Address 和 Range(...) / Cells(3,15).Address 和 Range(...).Address
- , / ; --> 在工作表中我必须使用“;”,在 VBA 中自动记录为“,”
- TRUE / VERDADERO --> 仍然是西班牙语点
我已经编写了所有排列(或组合?:-P)并随后运行所有排列(144 种变体),总是收到相同的错误类型。
所以,问题可能出在其他地方......我错过了什么? 非常感谢!!
【问题讨论】:
-
没有必要使用
Integer超过Long:Integers vs Longs 32-bit vs 64-bit