0

我已经尝试追踪并解决这个错误几个小时了,但我就是想不通。这是设置。

我有一本 Excel 工作簿,里面有两张纸:“输入”和“计算”。我已经编写了一些自定义函数来计算某些事情。这些函数在“计算”表中使用,但在“输入”表中引用单元格。现在,如果我只是使用工作表本身,一切都可以正常工作并且功能可以正常工作。

但是,我有第二个与第一个交互的 Excel 工作簿。我在第二个工作簿中有一个宏,它试图在第一个工作簿的“输入”表中定义值。但是,当它这样做时,突然这些功能不起作用。当我尝试在“计算”表中跟踪单元格的错误,并尝试转到“输入”表中的单元格时,它声称引用无效。

我不知道问题是什么。起初我认为这可能与第一个工作簿的名称有关(即“Log K Calculator 7.0.0.xlsm”),但我尝试更改它,但我遇到了同样的问题。这是第二张表中的宏,它试图更改第一张表中的值:

Sub macro()

Dim logK As String
Dim this As String
logK = "Log K Calculator 7.0.0.xlsm"
this = ThisWorkbook.Name

Workbooks(logK).Activate

Workbooks(logK).Sheets("Input").Cells(11, 4).Value = Workbooks(this).Sheets(1).Cells(1,   "B").Value
Workbooks(logK).Sheets("Input").Cells(12, 4).Value = Workbooks(this).Sheets(1).Cells(2, "B").Value
Workbooks(logK).Sheets("Input").Cells(14, 4).Value = Workbooks(this).Sheets(1).Cells(3, "B").Value

End Sub
4

2 回答 2

2

我知道这个线程已经有 4 年历史了,但是,以防万一有人还在像我一样寻找答案,对我来说,这个错误不是由我的代码引起的,而是因为我通过单击一个文本框来运行该程序我是从另一个工作簿中复制的。我已将过程/宏附加到文本框,但忘记了已经分配给同一个文本框的超链接。删除超链接解决了这个问题。

于 2016-11-29T10:40:24.193 回答
0

您可能想要检查 Excel 如何处理外部工作簿中的任何值。例如,它是否将数字视为文本?您可以通过在输入表中手动输入 '10000、'300 和 '600 来检查这一点(强制将它们视为文本但显示数字),并查看是否收到相同的参考错误。

如果你这样做了,那么将值转换为类型变量(Long,Decimal,你命名它)可能会解决这个问题。或者至少让 VBA 扼杀格式不正确的那些(例如,其中一些有空格,这可能解释了明显的不一致)

于 2012-11-04T23:35:16.217 回答