我试图追踪并解决这个错误几个小时了,我无法理解。这是设置。
我有一个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
答案 0 :(得分:0)
您可能想要检查Excel如何处理外部工作簿中的任何值。例如。它将数字视为文本吗?你可以通过在输入表中手动输入'10000,'300和'600来检查这一点(强制它将它们视为文本但显示数字),并查看是否得到相同的ref错误。
如果你这样做,那么将值转换为类型变量(Long,Decimal,你可以命名)可能会解决问题。或者至少让VBA阻塞在格式不正确的文件上(例如,有些文件中有空格,这可能解释了明显的不一致)
答案 1 :(得分:0)
我知道这个帖子已经有4年了,但是,如果有人仍在寻找像我一样的答案,对我来说这个错误不是由我的代码引起的,而是由于我通过点击运行程序我从另一个工作簿复制的文本框。我已将过程/宏附加到文本框但忘记了已经为同一文本框分配了超链接。删除超链接修复了问题。