Excel 根据回答组合框选择.OFT

Excel 根据回答组合框选择.OFT,excel,ms-access,vba,Excel,Ms Access,Vba,我创建了一个包含3个选项的组合框。我有3种与此组合框相关的.OFT类型。组合框名为Study\u String Dim Study_Stage As String If Study_Stage <> "Start-Up" Or Study_Stage <> "Closed at IRB" Then Set objMsg = OutApp.CreateItemFromTemplate("X:\Users\Test Realm\OFT Template Maint

我创建了一个包含3个选项的组合框。我有3种与此组合框相关的.OFT类型。组合框名为
Study\u String

Dim Study_Stage As String

If Study_Stage <> "Start-Up" Or Study_Stage <> "Closed at IRB" Then

    Set objMsg = OutApp.CreateItemFromTemplate("X:\Users\Test Realm\OFT Template Maintenance.oft")

End If

If Study_Stage = "Maintenance" Or Study_Stage <> "Closed at IRB" Then

    Set objMsg = OutApp.CreateItemFromTemplate("X:\Users\Test Realm\OFT Template Start Up.oft")

End If

If Study_Stage <> "Maintenance" Or Study_Stage <> "Start-Up" Then

    Set objMsg = OutApp.CreateItemFromTemplate("X:\Users\Test Realm\OFT Template Closure.oft")

End If
Dim Study\u Stage作为字符串
如果研究阶段“启动”或研究阶段“在IRB关闭”,则
设置objMsg=OutApp.CreateItemFromTemplate(“X:\Users\Test Realm\OFT Template Maintenance.OFT”)
如果结束
如果研究阶段=“维护”或研究阶段“在IRB关闭”,则
设置objMsg=OutApp.CreateItemFromTemplate(“X:\Users\Test Realm\OFT Template Start-Up.OFT”)
如果结束
如果研究阶段“维护”或研究阶段“启动”,则
设置objMsg=OutApp.CreateItemFromTemplate(“X:\Users\Test Realm\OFT Template Closure.OFT”)
如果结束

目前,它只使用“OFT TEMPLATE CLOSURE.OFT”,而不使用其他两个。

我想您需要其他版本。
看看这个

If Study_Stage <> "Start-Up" Or Study_Stage <> "Closed at IRB" Then
    Set objMsg = OutApp.CreateItemFromTemplate("X:\Users\Test Realm\OFT Template Maintenance.oft")
ElseIf Study_Stage = "Maintenance" Or Study_Stage <> "Closed at IRB" Then
    Set objMsg = OutApp.CreateItemFromTemplate("X:\Users\Test Realm\OFT Template Start Up.oft")
ElseIf Study_Stage <> "Maintenance" Or Study_Stage <> "Start-Up" Then
    Set objMsg = OutApp.CreateItemFromTemplate("X:\Users\Test Realm\OFT Template Closure.oft")
End If
如果研究阶段“启动”或研究阶段“在IRB关闭”,则
设置objMsg=OutApp.CreateItemFromTemplate(“X:\Users\Test Realm\OFT Template Maintenance.OFT”)
如果研究阶段=“维护”或研究阶段“在IRB关闭”,则
设置objMsg=OutApp.CreateItemFromTemplate(“X:\Users\Test Realm\OFT Template Start-Up.OFT”)
如果研究阶段“维护”或研究阶段“启动”,则
设置objMsg=OutApp.CreateItemFromTemplate(“X:\Users\Test Realm\OFT Template Closure.OFT”)
如果结束
在代码中,将执行每个if块。最后一个跑的赢。 此外—
你的情况毫无意义。我不知道这背后的逻辑,但是当你看到
。。。或者通常存在逻辑错误。

您在哪里用
研究字符串的值分配
研究阶段
?您是否尝试调试代码以检查
Study\u Stage
的值是否与您期望的值匹配?@MathieuGuindon Study\u Stage是组合框的名称,因此他们选择的选项是值。但您的代码没有这样说。它将
研究阶段声明为字符串
。请参阅,
StudyStageBox.Value
将更加明确-特别是考虑到您明确提到组合框的名称为
Study\u String
@OP:now可能是一个很好的机会来阅读断点(F9)和分步执行(F8)调试器工具。我无法让“学习阶段”发挥作用,所以我不得不这样做。我会查一下你给马修建议的F9和F8。非常感谢。我很肯定你错了。条件
研究阶段“启动”或研究阶段“IRB关闭”
将始终返回真值。这同样适用于
研究阶段“维护”或研究阶段“启动”
如果s_N0=“在IRB关闭”,则设置objMsg=OutApp.CreateItemFromTemplate(“X:\…\OFT Template Closure.OFT”)ElseIf s_N0=“维护”,然后设置objMsg=OutApp.CreateItemFromTemplate(“X:\…\OFT Template.OFT”)ElseIf s_N0=“启动”然后设置objMsg=OutApp.CreateItemFromTemplate(“X:\…\OFT Template Start-Up.OFT”),如果我使用“If/ElseIf”并使用“=”而不是“”,并将组合框名称从“Study\u Stage”更改为“s\u N0”,则结束该操作,此时即可按预期工作;我现在无法右键单击来处理我的用户表单,但我不知道如何修复它。