定义变量错误

时间:2017-08-29 13:52:00

标签: excel vba excel-vba variables numbers

我在包装单上打了一个装箱单。我的所有按钮都在装箱单上。我在单元格O5中有一个需要定义为PNUM的订单号。 PNUM与ONUM进行比较,ONUM被定义为查看订单表头中的每个变量,并复制正在运送包的相应客户端。

到目前为止,这是我的代码:

Private Sub CommandButton3_Click()

    Dim PNUM As Long
    Dim ONUM As Long
    Dim c As Integer
    c = 17



    For I = 295 To 300
        PNUM = Sheets("Packing Slip").Cells(15, 5)
        ONUM = Sheets("Order Header").Cells(I, 1)

        MsgBox (PNUM)
        MsgBox (ONUM)

        If PNUM = ONUM Then

                Worksheets("Packing Slip").Cells(c, 2) = Worksheets("Order Header").Cells(I, 2)
                Worksheets("Packing Slip").Cells(c, 11) = Worksheets("Order Header").Cells(I, 3)
                Worksheets("Packing Slip").Cells(c, 6) = Worksheets("Order Header").Cells(I, 4)

            End If
    Next I

出于某种原因,我的PNUM消息框始终为0,而​​不是输入的值。

提前感谢任何有帮助的人!!

2 个答案:

答案 0 :(得分:1)

尝试改变这一点:

PNUM = Worksheets("Packing Slip").Range("E15")

像这样:

>> require 'rubygems'
=> false
>> require 'redis'
=> true
>> r = Redis.new
=> #<Redis client v2.2.1 connected to redis://127.0.0.1:6379/0 (Redis v2.3.8)>
>> r.ping
=> "PONG"
>> r.set('foo','bar')
=> "OK"
>> r.get('foo')
=> "bar"

如果有效,则会误认为行和列。

答案 1 :(得分:1)

作为Vityata correctly pointed out,您正在反映.Cells来电中的行和列。

这是一个容易陷入的陷阱,因为您正在使用针对Object的后期绑定调用,因此,在您键入时,不要使用IntelliSense工具提示来告诉您预期的参数是什么。

解决方案是使用针对Worksheet的早期绑定调用。声明一个局部变量:

Dim sheet As Worksheet
Set sheet = ThisWorkbook.Worksheets("Packing Slip")

现在针对.Cells变量执行的sheet调用将为您提供智能感知工具提示,您再也不会犯错误了!