我被困住了,想要一点点发言。我试图在D12,d14,d16 ......到d42上获得一个数量。比这个数量乘以一个值。价值表看起来像这样。
A B C
ItemName Quality Confort
1 Chair 2 1
2 Bed 0 3
3 Table 1 1
A B C D
ItemName QTYColumn
12 .. Table 2
13
14 .. Chair 5
15
16 .. Bed 6
A B
Quality 12 (2*1 + 5*2 + 6*0 )
Confort 25 (2*1 + 5*1 + 6*3 )
我很幸运,我做的最难。我可以检查并从我想要的所有床单中获取数量。我还完成了一个功能,你传递了项目的名称和统计信息名称,它返回了我想要的结果。
所以,我得到了代码atm的这部分不起作用,它让我疯狂。
For Counter = 12 To 42 Step 2
For Each qColumn In QTYColumn
Set QTY = Range(qColumn & Counter)
Dim ItemName As Range
ItemName= QTY.Offset(-2, 0).Select
total = total + (QTY * GetValue(ItemName, "Confort"))
Next qColumn
Next Counter
我的问题在于ItemName变量。它总是空的,一旦我使用调试器,它就会停止并关闭。任何人都知道为什么?根据偏移-2而不是列地址来确定它是非常重要的,因为根据工作表的不同,它可能会有所不同,而且只有#34;确定"找到它的方法是获取数量单元格左侧的第二个单元格。
答案 0 :(得分:2)
ItemName= QTY.Offset(-2, 0).Select
没有任何意义!
您选择:
QTY.Offset(-2, 0).Select
或者你得到的价值:
ItemName= QTY.Offset(-2, 0).Value
'(此处可以省略值)
但是,Dim ItemName As Range
没有意义。它应该是String
或数字。
或者你得到范围:
Set ItemName= QTY.Offset(-2, 0)
'然后您需要Set