VBA If条件判断执行异常 TextBox取值不符合预期问题排查
故障原因
你的判断逻辑写死了优先校验A2单元格的值:只要A2内容是Pan Tadeusz,程序会直接进入第一个If分支执行,完全不会进入后面的ElseIf判断,这就是你始终取到C2值、永远走不到C3取值分支的核心原因。
另外代码里存在单元格引用错误:你给kordianilosc变量赋值时取的是B3单元格,和你预期读取C3的需求不符。
修复方法
- 把判断的依据从固定读A2单元格值,改成你实际用来触发选择的条件:比如如果是通过输入/选择书名来匹配对应记录,就取你输入控件的值作为判断关键字,不要写死固定判断某个单元格的静态值。
- 修正错误的单元格列引用,Kordian对应的数量列是C3而非B3。
- 修复后的参考代码:
Private Sub CommandButton4_Click() ' 替换成你实际的判断取值来源,比如如果是用输入框填书名查询就取对应文本框值 Dim matchKeyword As String matchKeyword = Trim(TextBox1.Value) If matchKeyword = "Pan Tadeusz" Then TextBox2.Value = Range("C2").Value TextBox7.Value = Range("D2").Value TextBox8.Value = Range("E2").Value ElseIf matchKeyword = "Kordian" Then TextBox2.Value = Range("C3").Value TextBox7.Value = Range("D3").Value TextBox8.Value = Range("E3").Value Else MsgBox "未查询到匹配的记录" End If End Sub
如果后续要新增更多书目匹配,建议用字典对象存书名和对应行号的映射关系,不用重复写多段If分支,维护起来更简单。
内容的提问来源于stack exchange,提问作者Bartek Sacha
相关产品推荐
相关产品推荐

