例如,如果我已经使用InStr
函数为Word文件分配了一些字符串搜索,并且又通过另一个InStr
调用来打开某些ppt文件(使用超链接)。
当用户键入用户表单时,会发生这种情况。
所以我的问题是,如果用户一次输入两个关键字,如何使excel决定打开哪个文件。
Option Explicit
Private Sub CommandButton1_Click()
If InStr(UCase(textbox1.Text), UCase("name of word file")) <> 0 Then
'Code
ElseIf InStr(UCase(textbox1.Text), UCase("name of ppt file")) <> 0 Then
'Code
Else
'Code
End If
End Sub
如果用户一次输入两个文件的名称,我如何使表单决定要打开哪个文件?
答案 0 :(得分:0)
类似于其他人在评论中所说的话:
If InStr(sample_string, "a") Then
Msgbox("A")
ElseIf InStr(sample_string, "b") Then
Msgbox("B")
Else
Msgbox("C")
End If
在上面的示例中:
sample_string = "a"
,您将得到Msgbox("A")
sample_string = "b"
,您将得到Msgbox("B")
sample_string = "a and b"
得到Msgbox("A")
在最后一种情况下,您得到Msgbox("A")
,因为首先检查了条件InStr(sample_string, "a")
。返回True后,它将运行相应的Msgbox("A")
代码并跳至End If
语句。 IF语句就是这样工作的。
要控制在sample_string = "a and b"
时要加载哪个文件,您可以:
就像@David Zemens提到的那样,使用另一种形式的表单控件来限制用户可以执行的操作。组合框或单选按钮会很好。
@JNEVILL的注释建议您可以将较高优先级的文件放在IF
块上,而将较低优先级的文件放在ELSEIF
块上。这会起作用。
我个人更喜欢通过在我的IF
块中添加一个条件来显式地控制该特定情况。这是为了提高可读性,也是考虑所有可能组合的好练习:
If InStr(sample_string, "a") AND InStr(sample_string, "b") Then
'Code to return higher-priority file
'Or reject the user entry
'Or whatever you like
ElseIf InStr(sample_string, "a") Then
'Code to open file "a"
ElseIf InStr(sample_string, "b") Then
'Code to open file "b"
Else
'Code to handle if neither "a" or "b" was given
End If