这看起来像是一个Scripting.Dictionary错误,但事实上下面的代码会抛出一个错误代码457,它与您的代码不同,并且字典的错误消息也不同。此键已与此集合的元素关联“这可以用代码来验证
Option Explicit
Sub Tst()
On Error Resume Next
Dim dic As New Scripting.Dictionary
dic.Add 1, 0
dic.Add 1, 0
Debug.Print Err.Number, Err.Description
End Sub
因此,这不是你的VBA代码,恕我直言,但它看起来有点像一个C#的错误,我们可以用一些代码验证这一点,打开在Visual Studio中的Windows窗体C#项目然后将Form1_Load编辑为以下内容
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
Dictionary<long, long> dicTest = new Dictionary<long, long>();
dicTest.Add(1, 0);
dicTest.Add(1, 0);
}
catch (Exception ex) {
System.Windows.Forms.MessageBox.Show(string.Format("{0} {1}", ex.HResult, ex.Message));
}
}
}
}
并且这会抛出带有您报告的错误号和消息的消息框。因此,它是一个C#字典错误恕我直言,并注意我们如何用try catch块捕获它,而我认为你有C#代码没有捕获错误。
所以接下来的问题是哪个工作簿负责。我会建议您在使用Application.EnableEvents = False
的实验中关闭事件处理,以便用任何语言VBA,C#,VB,NET编写的事件处理程序都不会运行。然后,您可以手动运行工作簿的初始化例程,如果没有错误发生您的工作簿无罪,而其他工作簿/插件必须有罪,您将错误报告给作者。
我希望你在这方面取得进展。没有反馈就很难做到这一点。
你可以通过单击调试并单步执行代码来查看错误产生的位置吗? –
不,它运行良好,错误只在打开文件时出现......并且它什么也没有亮。 – Rdster
我在Excel 2016中遇到了同样的错误。关闭所有打开的实例后重新启动Excel。 – ChrisB