【问题标题】:Define variable error定义变量误差
【发布时间】:2017-08-29 13:51:59
【问题描述】:

我正在装箱单上创建装箱单。我所有的纽扣都在装箱单上。我在单元格 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,而不是输入的值。

提前感谢任何可以提供帮助的人!

【问题讨论】:

  • 将另一个 msgbox 放入:MsgBox Sheets("Packing Slip").Cells(15, 5) 并查看它返回的内容,我猜你指向错误的单元格。

标签: vba excel variables numbers


【解决方案1】:

尝试改变这一点:

PNUM = Sheets("Packing Slip").Cells(15, 5)

像这样:

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

如果它有效,则说明您弄错了行和列。

【讨论】:

  • 谢谢。我知道这是一件小事,我只是太远了,无法从那个角度看待它。谢谢!!
【解决方案2】:

作为Vityata correctly pointed out,您正在反转.Cells 调用中的行和列。

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

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

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

现在,您针对 sheet 变量执行的 .Cells 调用将为您提供 IntelliSense 工具提示,您将永远不会再犯该错误!

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2018-05-03
    相关资源
    最近更新 更多