【问题标题】:Multiple variables in a message box消息框中的多个变量
【发布时间】:2014-05-05 16:10:20
【问题描述】:

我希望在消息框中显示多个变量:ID、客户姓名、添加日期、地点和状态。目前,我只能显示 ID,其他变量出现 Runtime 13 错误。我的代码如下。

Sub LookupTicket()
Dim ibox, tid As Range
Dim dad, sta, ven, cna As Variant

Set Sheet = Worksheets("ControlSheet")

dad = Range("DateAdded_CS").Value
sta = Range("Status_CS").Value
ven = Range("Venue_CS").Value
cna = Range("CustName_CS").Value

ibox = InputBox("Enter Ticket ID:", "Redeem Ticket")
If ibox <> "" Then
Set tid = Sheet.Range("A:A").Find(ibox)
If tid Is Nothing Then
    MsgBox "Ticket ID not found!", vbCritical, "Redeem Ticket"
Else
'MsgBox "Ticket details for ID: " & tid & vbNewLine & "Date Added: " & dad & vbNewLine & "Customer Name: " & cna & vbNewLine & "Venue: " & ven & vbNewLine & "Status: " & sta, vbInformation, "Lookup Ticket Details"
MsgBox "ID: " & sta, "Lookup Ticket"
End If
End If

感谢大家的意见。

【问题讨论】:

  • 您的注释行是给您错误的那一行,我将其粘贴到工作簿中并且可以正常工作吗?
  • 是的,这就是产生错误的那一行。
  • 请尝试在其自己的 MsgBox 中显示 每个 变量。这应该可以帮助您确定哪些是错误的来源。让我知道哪些变量无法打印到 MsgBox。
  • 目前只有 TicketID 有效,所有其他变量都返回上述错误。
  • 类型 13 错误表明这些命名范围中的值可能评估为错误值。或者这些命名范围可能由多个单元格组成?

标签: excel vba messagebox


【解决方案1】:

变量tid 是一个范围。如果它只有一个单元格,则应将其更改为 tid.Value

编辑:检查tid.count = 1 我在尝试从范围内的一组单元格中取值时收到类型不匹配 (13) 错误。您的 Range.Find(ibox) 可能返回多个值。

【讨论】:

  • MsgBox "Ticket: " &amp; tid.Value &amp; ", Station: " &amp; sta.Value, vbCritical, "标题"
  • 我认为您正在做某事。假设单个单元格范围,.Value 将不是必需的。由于 OP 使用范围 .Find 方法,我怀疑解决方案将涉及索引命名范围以执行某种“查找”功能来检索其他变量的值。
  • @DavidZemens 当我在 find here 上查找文档时,但它说它返回第一个 cell。让我感到困惑。
  • 您对 Find 方法是正确的,但从问题来看,我认为 OP 正在尝试查询某些数据(在表格或电子表格中)。代码提示输入 ID 值,大概dad, sta, ven, cna 是与 ID 字段对应的列范围。但除非 OP 回应任何评论/问题,我想我们永远不会知道。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2020-01-23
相关资源
最近更新 更多