excel - TextBox1_Lostfocus 的代码在文本框“失去焦点”之前开始运行
问题描述
我在 Excel 工作表中有一个文本框和一个组合框,它们相互依赖。有时,文本框的代码在输入一个字符后开始运行,而不是等到我单击它,最终出现错误结果。请参阅下面的代码和文本框属性的屏幕截图。
Private Sub TextBox1_Lostfocus()
Range("p5").Value = TextBox1.Value
With Range("P5")
.NumberFormat = "0"
.Value = .Value
End With
Range("Q5").FormulaR1C1 = "=IFNA(VLOOKUP(RC[-1],[ShevgenII.xlsb]Sheet1!R1C1:R60C2,2,FALSE),""Error"")"
End Sub
Private Sub ComboBox1_Change()
On Error Resume Next
Sheets("Calculator").Range("q5").Copy
Sheets("Calculator").Range("q5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("Calculator").Range("P5").FormulaR1C1 = "=IF(RC[1]=""Fee Class"",""Enter"",LEFT(RC[1],3))"
TextBox1.Value = Range("P5")
Sheets("Calculator").Range("A1").Copy
Sheets("Calculator").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
我知道我的代码很业余,我还在学习......
例如,当我想输入数字“524”但我只需要输入“5”时,就会出现问题,Vlookup 将返回错误,因为“5”不匹配。请注意,“q5”是组合框的链接单元格,因此对文本框的更改会自动触发组合框代码。
解决方案
在此 excel 文件的先前版本中,我在同一个代码表上也有此代码:
Private Sub TextBox1_Change()
End Sub
我现在把它加回来了,它工作正常。
我最初在为我的队友发布此文档之前清理所有额外代码时删除了它;那是我开始遇到上述问题的时候。然而,即使它是一个空白程序,它似乎也不是多余的。我想这有点告诉VBA不要仅仅因为改变而做任何事情,而是应该等到文本框失去焦点。
推荐阅读
- c# - .NET API 未插入 SQL Server,但没有错误
- vue.js - 为什么我会在我的承诺中收到这个未定义的属性错误消息?
- c - 调整 SDL 窗口大小而不调整内容大小
- apache-spark - 缓存后正在重新评估 Spark 数据帧
- compiler-errors - GLSL WebGL2 错误多行宏 Safari 12 和 ios12,WebGL:INVALID_VALUE:shaderSource:字符串不是 ASCII
- aws-lambda - 如何在 AWS CDK 中获取 lambda 函数的执行角色的 Arn
- ruby-on-rails - 尝试将omniauth facebook与rails集成并部署到heroku时无法登录
- java - 掷两个骰子得到 7
- batch-file - 批处理文件似乎没有正确调用其他批处理文件
- python - 如何设置记录优先级以显示 HTML?