范围识别不一致(没有错误)

时间:2014-01-04 15:00:02

标签: vba excel-vba excel-2010 excel

这是Excel 2010中的代码。所有代码都驻留在工作簿本身中。使用内部表单收集信息并运行代码。

我有从电子表格中检索数据并使用该数据填充对象的代码。行号是动态的,因为它取决于表单输入。该列是标题,而不是列号。以下代码可以完美地工作,但是有两个异常:

        cTank.RowForTankSpecs = rNum
        cTank.MP = .Cells(rNum, Range("MP").Column).Value
        cTank.Form = .Cells(rNum, Range("formName").Column).Value
        cTank.TankProcess = .Cells(rNum, Range("Process").Column).Value
        cTank.Location = .Cells(rNum, Range("Location").Column).Value
        cTank.TankName = .Cells(rNum, Range("Tanks").Column).Value
        cTank.tankID = .Cells(rNum, Range("TankID").Column).Value

第一:

cTank.TankName正在从名为“Tanks”的列中检索信息。该列不存在。实际的列标题是“Tank”。但是,它正在检索正确的信息。如果我将名称改为实际名称(坦克),它就不起作用。

第二

执行cTank.TankID行后,我在Range("TankID")上收到以下错误:

Runtime Error 1004: Method 'Range' of object '_Global' failed

这个具有适当的标题(列标题),但它无法识别范围。

我尝试过简单的事情,例如更改代码的顺序,但它没有帮助。如前所述,其他线路起作用。在程序的后面,信息以相同的方式收集,但使用同一工作簿中的另一个工作表,但没有一个工作。我已经仔细检查过字符串是字符串,整数是整数等等。我已经仔细检查了列标题与范围名称的匹配。似乎没有什么可以跳出来。

我很感激您对此情况的任何意见。

提前致谢。

史蒂夫

2 个答案:

答案 0 :(得分:0)

确定。我非常确定我的代码是正确的,我去了电子表格本身。出于某种原因,它只识别某些列,并且正在识别其中一列不正确。所以我开始突出显示有效的列以及没有的列。我注意到的是,在被识别的列上,显示了通常显示单元格位置的列标题,而在未被识别的列上显示了标题的单元格位置(即A1,A2等)正在显示而不是标题标题本身。其中一个标签显示不正确的标签。事实证明,错误标记的列是我用于表单下拉菜单的列。所以,我检查了名称管理器,列出了正在运行的名称管理器。所以无论如何,使用名称管理器,我使用标题添加了命名范围。现在,当我选择列时,列标题(命名范围)出现在该窗口中,现在,代码可以正常工作。

感谢大家的投入。我真的很感激。

答案 1 :(得分:0)

你可以做两件事:

请勿使用Range,但由于您似乎在使用名称,请使用Names("Yourname").Referstorange

OR

确保使用数据功能区中的Name Manager正确设置名称。