无法使.Offset在excel vba宏中工作

时间:2013-10-12 20:38:06

标签: excel-vba vba excel

我被困住了,想要一点点发言。我试图在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;确定"找到它的方法是获取数量单元格左侧的第二个单元格。

1 个答案:

答案 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