这是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
这个具有适当的标题(列标题),但它无法识别范围。
我尝试过简单的事情,例如更改代码的顺序,但它没有帮助。如前所述,其他线路起作用。在程序的后面,信息以相同的方式收集,但使用同一工作簿中的另一个工作表,但没有一个工作。我已经仔细检查过字符串是字符串,整数是整数等等。我已经仔细检查了列标题与范围名称的匹配。似乎没有什么可以跳出来。
我很感激您对此情况的任何意见。
提前致谢。
史蒂夫
答案 0 :(得分:0)
确定。我非常确定我的代码是正确的,我去了电子表格本身。出于某种原因,它只识别某些列,并且正在识别其中一列不正确。所以我开始突出显示有效的列以及没有的列。我注意到的是,在被识别的列上,显示了通常显示单元格位置的列标题,而在未被识别的列上显示了标题的单元格位置(即A1,A2等)正在显示而不是标题标题本身。其中一个标签显示不正确的标签。事实证明,错误标记的列是我用于表单下拉菜单的列。所以,我检查了名称管理器,列出了正在运行的名称管理器。所以无论如何,使用名称管理器,我使用标题添加了命名范围。现在,当我选择列时,列标题(命名范围)出现在该窗口中,现在,代码可以正常工作。
感谢大家的投入。我真的很感激。
答案 1 :(得分:0)
你可以做两件事:
请勿使用Range
,但由于您似乎在使用名称,请使用Names("Yourname").Referstorange
。
OR
确保使用数据功能区中的Name Manager
正确设置名称。