选择具有复杂返回值的案例 (VBA 2007)

Posted

技术标签:

【中文标题】选择具有复杂返回值的案例 (VBA 2007)【英文标题】:Select Case with Complex Return Value (VBA 2007) 【发布时间】:2019-12-11 22:44:31 【问题描述】:

使用 Excel 2007 且缺乏 VBA 经验。

我正在尝试创建一个文本生成器,在给定特定类型的条目的情况下,它会返回一个文本字符串和一些相应的单元格。

我有很多数据要组合,还有一些复杂的文本语句。我这里的数据是样本数据。最终文件将多个文本字符串(“one”和“two”等)与需要根据那里的特定数据输入引用的多个单元格组合在一起(某些情况下需要 8 个不同的单元格)。

我能够弄清楚如何执行 Select Case,它可以查找我需要的条目类型,并返回一个特定的文本字符串。伟大的!我也知道我可以结合“一”和“二”之类的东西。但是如何组合对应的文本行呢?

如果条目是“ID”,我可以在哪里返回看起来像“One 1”但将“One”和 K2 组合为要返回的 .Value 的东西?

图片显示样本数据

图片显示了 I、J 和 K 列的数据。 I 列存储条目类型,J 是返回数据的位置,K 是要引用数据的列。同样,这里是简化的参考数据。

我知道这条线是错误的。但我不确定要为 K2 设置什么,以便它正确引用单元格,然后正确循环 300 次。

Case Is = "ID": .Value = "One" & (K2)

我是否接近可行的东西?你有什么建议? Select Case 是否是处理此问题的错误方法?

我尝试了许多选项,但我对 VBA 缺乏经验。我认为我为解决问题而实施的任何措施都可能做得不正确。

我在下面显示的完整代码。

Private Sub CommandButton1_Click()

Dim logtype As Range

For Each logtype In Range("I2:I302")
    With logtype.Offset(0, 1)

        Select Case logtype.Value
            Case Is = "ID": .Value = "One" & K2
            Case Is = "Phase": .Value = "Two"
            Case Is = "Install New": .Value = "Three"
            Case Is = "Install OH": .Value = "Four"
           Case Is = "Install AR": .Value = "Five"
            Case Is = "Insp": .Value = "Six"
            Case Is = "LUI": .Value = "Seven"
            Case Is = "": .Value = ""
            Case Else: .Value = "Not Recognized"
        End Select
    End With
Next logtype

End Sub

编辑:

我在下面的评论中,只是格式更清晰。

我想创建一个宏,它可以根据工作订单中完成的工作类型输出正确的条目语言。

例如,ID 或 Install New 然后为条目返回正确的语言和参考数据:

I2:ID

K2:编号(我会输入实际编号)

返回:

“符合 ID 号 [K2]。未发现缺陷。”

I4:安装新的

L4:实际零件编号

M4:等等……

N4: ...

O4:……

返回:

“已移除 P/N [L4]、S/N [M4]。已安装 P/N [N4]、S/N [O4]。操作检查良好。”

这有意义吗?谢谢!

编辑 2:

大家好,我已经尝试寻找解决这个问题的替代方法,但我仍然没有比我这里的更好。

任何想法或帮助将不胜感激。谢谢!

【问题讨论】:

在您显示的表格中的NA 之外,数据会是什么样子?我假设 I 和 J 列将具有相同的信息,但 K 中的值可能不是 1 到 8 另外,如果你可以模拟一个输出应该是什么的例子可能会有所帮助。 看起来您正在将 J 中的值替换为其原始值加上 K 中的值。这就是您所追求的吗?如果是这样,下面的解决方案将做到这一点。 下面的解决方案不是我想要的。我想创建一个宏,它根据工作订单中完成的工作类型吐出正确的条目语言。例如,ID 或 Install New,然后为条目返回正确的语言和参考数据: I2:ID K2:编号(我将输入实际编号) 返回:“符合 ID 编号 [K2]。否注意到缺陷。” I4:安装新 L4:实际零件编号 M4:等... N4:... O4:...“已移除 P/N [L4],S/N [M4]。已安装 P/N [N4],S /N [O4]。操作检查良好。”那有意义吗?谢谢! 【参考方案1】:
For each cell in Range("I2:I302")
   cell.offset(0,1).value=cell.offset(0,1).text & cell.offset(0,2).text
next

【讨论】:

以上是关于选择具有复杂返回值的案例 (VBA 2007)的主要内容,如果未能解决你的问题,请参考以下文章

VBA-如何选择具有值的列单元格

选择案例在 VBA 中失败?

如何在 ms-access 2007 VBA 中计算 mod 97

mysql返回最大n个具有相同值的行

从元组列表中返回具有最小 y 值的元组

在 excel 2007 vba 中找不到可安装的 ISAM