我已经搜索了这个站点,并发现了一个用户的代码,该代码对我的应用程序来说几乎是完美的。
Private Sub TextBox1_Change()
If InStr(2, TextBox1, "*RCBC*") > 1 Then
Me.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = Me.TextBox1.Value
Me.TextBox1.Text = ""
End If
End Sub
此代码将获取在文本框中输入的数据,并在找到 RCBC 后将其移动到 A 列中的第一个可用位置。
我想更改的是,此代码从定义的单元格而不是文本框执行此任务。因为此应用程序是从条形码扫描仪接收数据,并在找到该字符串时移动内容。扫描仪只会将数据输入到单元格中。我对VBA知之甚少,但有一些编码背景。
先感谢您。
最佳答案
Worksheet_Change()
是一个事件,您可以使用它:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Cells.Count > 1 Then Exit Sub
If InStr(2, UCase(Target.Value2), "RCBC") > 1 Then
Target.Value2 = Target.Value2
Else
Target = vbNullString
End If
Application.EnableEvents = True
End Sub
UCase()
,因此它检查 RCbC
和 RcBc
也是。 Application.EnableEvents = False
需要暂时禁用事件,从而避免无限循环,因为在同一个单元格中一遍又一遍地写入。 Target.Cells.Count > 1
检查选定单元格的数量。 关于excel - 更改 VBA 代码以从定义的单元格而不是文本框 (Excel) 中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50725048/