excel - 更改 VBA 代码以从定义的单元格而不是文本框 (Excel) 中读取

标签 excel

我已经搜索了这个站点,并发现了一个用户的代码,该代码对我的应用程序来说几乎是完美的。

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() ,因此它检查 RCbCRcBc也是。
  • Application.EnableEvents = False需要暂时禁用事件,从而避免无限循环,因为在同一个单元格中一遍又一遍地写入。
  • Target.Cells.Count > 1检查选定单元格的数量。
  • 关于excel - 更改 VBA 代码以从定义的单元格而不是文本框 (Excel) 中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50725048/

    相关文章:

    html - 从 Html 源在 Excel 中创建注释

    excel - 从 Excel 中导入的列表制作表格

    excel - 通过电子邮件搜索将 Excel 2003 中的数据行复制并粘贴到不同的工作表

    excel - 在多列中具有多个条件和 OR 逻辑的 SUMIFS

    python - 使用 openpyxl 加载工作表并忽略包含数据透视表的其他工作表

    r - 如何将Excel日期格式转换为R中的正确日期

    arrays - 将范围(有条件)中的唯一值组合到另一个范围中

    excel - 将 Google 搜索导出到电子表格

    Excel 带条件的非重复计数

    vba - 使用 FSO MoveFile 和 Name-As 重命名文件不起作用