這看起來像是一個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