【问题标题】:excel vba - syntax errorexcel vba - 语法错误
【发布时间】:2016-12-14 21:30:15
【问题描述】:

我不太清楚 Excel VBA 中的语法错误是什么,我看到的错误是:“运行时错误 1004:应用程序定义或对象定义错误”

Sheets("Totals").Select
x = Range("A139").Activate
Range("E139:AB166").Formula = "=INDEX(""Model""!$A$3:$Z$1000,MATCH($" & x & ",""Model""!$A$3:$A$1000,0),MATCH(E$3,""Model""!$A$3:$Z$3,0))"

我正在尝试使用索引匹配匹配公式,其中索引引用是文件中的另一个工作表。我正在尝试在 E139:AB166 范围内填充公式,这样 x 变量被锁定到 A 列,最后一个匹配函数被锁定在第三行 (E$3)。

x = Range("A139").Activate

这行代码应该强制将光标移到“模型”工作表中的该单元格。 “模型”是文件中工作表的名称。我认为“”是必要的,以提醒 vba 该字符串指的是工作表名称。 如果工作表名称由两个字符串组成,例如“模型 1”,该怎么办。那么语法是什么?

""Model 1""!A3

'x' 是添加新数据的单元格,我写了一行代码来动态更改它。

x = Range("A" & insert_at).Activate

其中 insert_at 是等于最后一行的变量,在工作表中不为空,+ 1。

insert_at = lastRow + 1

因此,我们的想法是将“模型”工作表中的其他数据动态添加到“总计”工作表中任何现有数据下方的当前工作表“总计”中。

感谢您对此提供的任何帮助。

谢谢!

【问题讨论】:

  • 双引号。如果您需要将报价显示为文本,请改用 Chr(34)。喜欢Chr(34) & "Model" & Chr(34) 而不是""Model""
  • @OAK 是 x 假设是 A 列中的不同行号?
  • 替代@Moacir 的建议,您可以将引号加倍以将它们用作文字" 字符。例如,"""Model""" - 外引号是字符串分隔符,而单词 Model 前后的 "" 表示文字 "
  • 第二行是什么意思??? x = Range("A139").Activate
  • 因为 Model 是一个工作表名称(我希望如此)它不需要 "" ,只需要最后的 ! ,所以你的公式应该是:"=INDEX(Model!$A$3:$Z$1000,MATCH($" & x & ",Model!$A$3:$A$1000,0),MATCH(E$3,Model!$A$3:$Z$3,0))" 。如果你能告诉我们x 应该是什么???

标签: vba excel


【解决方案1】:

在 E139 中键入正确的工作公式,然后使用我写过一次的this little Sub,将其转换为 vba 可用的公式字符串。

 Sub RngToVba(src As Range)  
 'writes the VBA code to re-create the formulae in given range  
 'by Patrick Honorez - www.idevlop.com  
 'usage: from debug window, type RngToVba [L14:R14]  
 ' or RngToVba range("L14:R14")  
  Dim c As Range  
  For Each c In src  
  Debug.Print "range(""" & c.Address & """).formula = """ & _  
        Replace(c.Formula, """", """""") & """"""  
  Next c  
 End Sub 

而且...看在上帝的份上,停止使用那些无用的selectactivate

Sheets("Totals").Range("E139:AB166").Formula = someString

更快、更容易调试、更易读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-28
    • 2015-09-24
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    相关资源
    最近更新 更多