0

我被困住了,想要一点帮助。我正在尝试在 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 而不是列地址来获取它很重要,因为它可能因工作表而异,唯一“确定”的找到它的方法是获取数量左侧的第二个单元格细胞。

4

1 回答 1

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

于 2013-10-12T20:56:44.063 回答