EXCEL VBA 多个If判断语句简化的问题

如以下代码:
Private Sub CommandButton1_Click()
If Sheet1.Range("A65536").End(xlUp).Offset(0, 0) <> "" Then
With TextBox1
If TextBox1 = Range("J2").Value Or TextBox1 = Range("J3").Value _
TextBox1 = Range("J4").Value Or TextBox1 = Range("J5").Value Then
Sheet1.Range("A65536").End(xlUp).Offset(0, 1) = .Text
.Text = ""
Else
MsgBox "技师姓名出错 请重新输入"
Exit Sub
End If
End With
With TextBox2
Sheet1.Range("A65536").End(xlUp).Offset(0, 2) = .Text
.Text = ""
End With
Unload Me
Else
MsgBox "未发现该工单号"
End If
End Sub

我在Sheet1 J2:J30 内填入技师姓名 要求第2个IF 判断语句 先判断TextBox1内输入内容是否为J2:J30的任意一个 如果不是则结束 但因J2:J30个单元格内有29名技师 可有办法进行简化

第1个回答  2014-03-05
建议改用ComboBox控件代替TextBox控件,将ComboBox控件的RowSource属性链接到J2:J30,这样的话,用户不用手工输入姓名了,只要在下拉列表中选择就行了。
当用户选择了ComboBox中的姓名以后,将触发ComboBox_Change事件,可将原来需要根据姓名进行的处理代码放置在这个事件过程中。
第2个回答  2014-03-05
dim st
st=join(application.transpose(range("j2").resize(28,1)).vlaue,",")
if instr(st,textbox1.text) then
有该姓名
else
MsgBox "技师姓名出错 请重新输入"
Exit Sub
End If追问

st=join(application.transpose(range("j2").resize(28,1)).vlaue,",")
该语句会报错

追答

哦,换一下

dim st
st = Join(Application.Transpose(Range("d2:d30").Value), ",")
if instr(st,textbox1.text) then
   .....有该姓名
   else
   msgbox "姓名出错,核实" :exit sub
end if

本回答被提问者采纳
第3个回答  2014-03-05

你是要判断TextBox1里输入的内容是否在J2:J30存在吗?是的话做个循环不就好了

For Each i in Range("J2:J30").value
    if TextBox1.value=i then
        XXXXXX
    end if
next i

追问

按照你的方法 可以识别 但有个问题 我正常输入技师姓名后 也能正常写入单元格 但仍然会提示技师姓名出错

EXCEL VBA 多个If判断语句简化的问题
建议改用ComboBox控件代替TextBox控件,将ComboBox控件的RowSource属性链接到J2:J30,这样的话,用户不用手工输入姓名了,只要在下拉列表中选择就行了。当用户选择了ComboBox中的姓名以后,将触发ComboBox_Change事件,可将原来需要根据姓名进行的处理代码放置在这个事件过程中。

Excel怎么把多个if简化excel多个if语句怎么写
1. 使用逻辑运算符:可以考虑将多个 IF 函数合并为逻辑运算符(如 AND、OR 等),以减少 IF 函数的数量。例如,将多个判断条件合并为一个逻辑表达式。2. 使用数组:在 Excel 中,可以使用数组来简化 IF 函数。例如,如果需要根据多个条件判断某个值,可以先将所有条件组合成一个数组,然后使用 IF 函...

excel关于vba中if多条件语句的用法,虚心求教
答案:在Excel VBA中,可以使用If多条件语句来根据多个条件执行不同的操作。具体用法是结合多个If语句或者利用And、Or等逻辑运算符连接多个条件。详细解释:1. 基本结构:在VBA中,If语句用于进行条件判断。对于多条件判断,可以通过嵌套的If语句来实现。基本结构如下:vba If 条件1 Then '执行操作A Else...

Excel VBA中ElseIf多层逻辑判断
在之前的文章中,我们探讨了如何利用Excel VBA的if语句简化数据处理。今天,我们将深入研究,引入elseif进行多层逻辑判断,它允许我们在函数中设置多个条件进行智能筛选。首先,打开Excel,点击“开发工具”选项卡,选择“Visual Basic”,进入编程环境,创建一个新的过程,命名为“等级判定”。从单个成绩单元...

有关VBA中if语句的简化问题
实际上就是用AND 和 or 就可以组成你所说的那种判断了。还有下面那个自定义函数就是你代码中重复的。Sub test()If sss = 0 Then MsgBox "没有选择查询条件!": Exit SubEnd IfFor i = 3 To izong '--- 写入查询结果 If Left(Shtxinxi.Cells(i, 2), 6) = riqi Then ...

Excel 关于VBA中IF多条件语句的用法,虚心求教
If Cells(1, 1) <> "" Then MsgBox "单元格不为空"End Sub 3、if……then……end if结构 该结构用于单选择判断语句执行,具体用法看下面实例。实例:对于第一列的第一行到第十行单元格,作如下判断,如果单元格为空值了那么在相应的第二列单元格输出“VBA教研室”。程序:Sub 判断语句()Dim...

Excel 关于VBA中IF多条件语句的用法,虚
在Excel的VBA编程中,IF语句是一种基础且强大的逻辑控制工具,用于根据多个条件执行不同的操作。其基本结构为:If 条件1 Then 处理内容 ElseIf 条件2 Then 处理内容 Else 默认处理 End If。这里的条件可以是简单的数值比较,如"="(等于)、">"(不等于)、"=="(等于)、"<"(小于)、">"(...

VBA里满足IF多条件
在VBA中,逻辑条件的处理与Excel公式有所不同。以下是一些示例,展示了如何使用VBA的If语句来实现Excel公式中的多条件判断:1. 当你需要检查A1等于1且A2等于2时,可以使用如下VBA代码:Sub IfTest()' 定义一个函数 ' 如果A1等于1且A2也等于2 If Range("A1") = 1 And Range("A2") = 2 Then...

excelvbaif判断语句的使用方法在最后以一个实例来剖析vbaif语句的具 ...
vba if语句为判断语句。根据条件的值,可使用 If...Then...Else 语句运行指定的语句或一个语句块。If...Then...Else 语句可根据需要嵌套多级。但是,为了代码的可读性,建议使用其余的语句,比如 Select Case 语句而不使用多层嵌套的vba中的 If...Then...Else 语句。vba if语句用法解释:当条件...

Excel 关于VBA中IF多条件语句的用法,虚心求教
网上很多教程。Private Sub Worksheet_SelectionChange(ByVal Target As Range)If [B1] < 8 Then [C1] = "小"Else If [B1] = 8 Then [C1] = "中"Else [C1] = "大"End If End If End Sub 就这意思:如果B1<8,那么C1=小 否则,如果B1=8,那么C1=中 否则C1=大 ...

相似回答