选择具有复杂返回值的案例 (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)的主要内容,如果未能解决你的问题,请参考以下文章