如何处理错误:“数据透视表中没有该名称的项目”。

所以我有一个数据透视表通过用户窗体内的命令框进行修改。 如果用户键入的名字不在列表中,我得到错误

数据透视表中不存在此名称的项目。 将Name1重命名为Name2?

其中Name1是列表中的人, Name1是不在列表中的人。

我实际上得到这个错误,就像我的命令箱修改的数据透视表数量的5倍。

我尝试了以下内容:

 On Error Resume Next 

我希望能简单地“跳过”这个问题。 不,那没办法哈哈。

虽然理想情况下,我想创build一个自定义的错误消息,只popup一次(而不是5次),并告诉用户input他们的部门/class的名字。 这个列表(我的命令箱使用的)总体上来自每个部门的每个class次的每个人,但并不是所有的人都有数据透视表中的数据,所以只是他/她们在我的命令箱用户列表中,他们不一定在数据透视表中。 我知道这是令人困惑的,但我必须这样做,所有class次使用相同的界面。 我不能访问部门内的人员名单,class次等。我只有一个大家的名单,所以这就是为什么我的命令箱必须使用它。

我还是VBA的“新手”,但是对于error handling我并不陌生。 我知道我将如何在Java中处理这个问题,而不是在VBA中。

这是代码的一部分,失败了:

 Range("D2").Select ActiveCell.Value = frmInd_Productivity_TrackerPS.ComboBox1.Value ActiveSheet.Range("B1").Select ActiveCell.Value = Range("F2").Value 

更新:我试着在我的编码的最上面join以下内容,但是这只是使得即使当人处于数据透视表中时popup错误框,并且该东西正常工作! 不知道为什么当没有错误时popupMessageBox!

 On Error GoTo ErrHandler: ErrHandler: ' error handling code Resume ErrMessage: ErrMessage: MsgBox "Name not found in this Department. Please Enter a New Name from this Department." Exit Sub 

更新:似乎popup的框是一个“警报”,而不是“错误”??? 如果我禁用所有的警报,那么它不会popup,但我也没有机会警告用户,他们input的名称是不正确的,它自动重新分配的东西(我不想!!!)。 有什么想法吗? 有没有像我可以使用的“On Alert GoTo”代码?

我找不到我想要的东西。 我确实find了解决办法。

解决问题(应用创可贴):

我做了一个新的工作表,从combobox中调用信息。 它转换它,然后用它来检查是否信息出现在我的数据透视表上使用循环。 然后,我根据是否find它(存储在一个新的variables中)来分配一个variables结果。 如果结果是1,则“If”语句将执行我的程序的整个块。 如果结果为0(意味着它没有在数据透视表中find该名称),则会popup消息说要更改名称并退出子数据库。 希望这有助于未来的人。

Interesting Posts