首页 > 解决方案 > 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”是组合框的链接单元格,因此对文本框的更改会自动触发组合框代码。 文本框属性

标签: excelvba

解决方案


在此 excel 文件的先前版本中,我在同一个代码表上也有此代码:

Private Sub TextBox1_Change() 
End Sub

我现在把它加回来了,它工作正常。

我最初在为我的队友发布此文档之前清理所有额外代码时删除了它;那是我开始遇到上述问题的时候。然而,即使它是一个空白程序,它似乎也不是多余的。我想这有点告诉VBA不要仅仅因为改变而做任何事情,而是应该等到文本框失去焦点。


推荐阅读