使用Access VBA代码,如何使用表列替换注释框中的单词以搜索要替换的单词集?

使用Access VBA代码,如何使用表列替换注释框中的单词以搜索要替换的单词集?,vba,ms-access,replace,columnname,Vba,Ms Access,Replace,Columnname,我想引用access中的表来替换注释框中的单词。我将搜索第1列中的单词,并用第2列中的单词替换它们。我不知道如何正确命名列,以便在替换函数中插入它们 下面是我尝试使用的代码示例 Private Sub Replace_Click() Dim bullet As String Dim output As String bullet = commentBox.Value commentBox.Value = Replace(bullet, [tbl_name].column_name, [tbl

我想引用access中的表来替换注释框中的单词。我将搜索第1列中的单词,并用第2列中的单词替换它们。我不知道如何正确命名列,以便在替换函数中插入它们

下面是我尝试使用的代码示例

Private Sub Replace_Click()

Dim bullet As String
Dim output As String

bullet = commentBox.Value
commentBox.Value = Replace(bullet, [tbl_name].column_name, [tbl_name].column_name)

End Sub
可考虑的备选方案:

  • 打开表的记录集,循环遍历记录,并对每个值执行Replace。若值在字符串中,它将被替换,若它不在字符串中,则什么也不会发生
  • 将字符串拆分为一个数组,循环数组并在表上执行DLookup。如果找到缩写,请在字符串上运行Replace。然而,这假定字符串中只有用单个空格分隔的单词,没有标点符号、数字或日期,这将使代码复杂化
  • subsubabb()
    Dim sStr为字符串,sAbb为字符串,sAry为变量,x为整数
    sStr=Me.commentBox
    sAry=拆分(sStr,“”)
    对于x=0到UBound(sAry)
    sAbb=Nz(DLookup(“Abb”、“单词”、“单词=””和sAry(x)和“”))
    如果是sAbb“”,则sStr=替换(sStr,sAry(x),sAbb)
    下一个
    Me.commentBox=sStr
    端接头
    
    要考虑的选项:

  • 打开表的记录集,循环遍历记录,并对每个值执行Replace。若值在字符串中,它将被替换,若它不在字符串中,则什么也不会发生
  • 将字符串拆分为一个数组,循环数组并在表上执行DLookup。如果找到缩写,请在字符串上运行Replace。然而,这假定字符串中只有用单个空格分隔的单词,没有标点符号、数字或日期,这将使代码复杂化
  • subsubabb()
    Dim sStr为字符串,sAbb为字符串,sAry为变量,x为整数
    sStr=Me.commentBox
    sAry=拆分(sStr,“”)
    对于x=0到UBound(sAry)
    sAbb=Nz(DLookup(“Abb”、“单词”、“单词=””和sAry(x)和“”))
    如果是sAbb“”,则sStr=替换(sStr,sAry(x),sAbb)
    下一个
    Me.commentBox=sStr
    端接头
    
    dlookup
    可能会有所帮助。你能再详细一点吗?编辑问题以提供示例数据。表达式如何知道从哪个记录中提取替换内容?我的计划是能够在文本框中键入一段。接下来,我会点击一个按钮来缩写表格中该段落中的任何单词。表格的A列有完整的单词,B列有该单词的缩写。我在excel中看到过VBA代码,但我不确定如何为Access编写它。
    dlookup
    可能会有所帮助。你能再详细一点吗?编辑问题以提供示例数据。表达式如何知道从哪个记录中提取替换内容?我的计划是能够在文本框中键入一段。接下来,我会点击一个按钮来缩写表格中该段落中的任何单词。表格的A列有完整的单词,B列有该单词的缩写。我在excel中看到过VBA代码,但我不知道如何为Access编写它。我在编写VBA代码方面还是相当新手。我是否需要以任何方式修改此代码以使其适合我的数据库?我尝试了上面的两个选项,甚至尝试了改变一些措辞,但我仍然收到错误。谢谢你的帮助!我相信需要修改。您将不得不使用对象名作为一个。我不知道你的数据库,所以真的无法具体说明。如果您需要更多帮助,请使用尝试的代码和遇到的错误编辑问题。我已经更正了DLookup表达式中的一个错误。您还需要注意,字符串的所有实例都将被替换,默认情况下Access不区分大小写,因此,如果word为“近似”,并且您希望替换为“app”,则“近似”将更改为“应用”.在重写一些数据以匹配我的数据库后,我能够使用选项1使其工作。是否有任何方法可以删除替换功能中的区分大小写功能?非常感谢你的帮助!你是说你想增加区分大小写的能力?Replace()有一个可选的比较参数,可以使用vbBinaryCompare参数设置大小写敏感度。有关详细信息,请参见我在编写VBA代码方面还是相当新手。我是否需要以任何方式修改此代码以使其适合我的数据库?我尝试了上面的两个选项,甚至尝试了改变一些措辞,但我仍然收到错误。谢谢你的帮助!我相信需要修改。您将不得不使用对象名作为一个。我不知道你的数据库,所以真的无法具体说明。如果您需要更多帮助,请使用尝试的代码和遇到的错误编辑问题。我已经更正了DLookup表达式中的一个错误。您还需要注意,字符串的所有实例都将被替换,默认情况下Access不区分大小写,因此,如果word为“近似”,并且您希望替换为“app”,则“近似”将更改为“应用”.在重写一些数据以匹配我的数据库后,我能够使用选项1使其工作。是否有任何方法可以删除替换功能中的区分大小写功能?非常感谢你的帮助!你是说你想增加区分大小写的能力?Replace()有一个可选的比较参数,可以使用vbBinaryCompare参数设置大小写敏感度。详情请参阅
    Sub SubAbb()
    Dim rs As DAO.Recordset, sStr As String
    Set rs = CurrentDb.OpenRecordset("SELECT Word, Abb FROM Words")
    sStr = Me.commentBox
    Do While Not rs.EOF
        sStr = Replace(sStr, rs!Word, rs!Abb)
        rs.MoveNext
    Loop
    Me.commentBox = sStr
    End Sub
    
    Sub SubAbb()
    Dim sStr As String, sAbb As String, sAry As Variant, x As Integer
    sStr = Me.commentBox
    sAry = Split(sStr, " ")
    For x = 0 To UBound(sAry)
        sAbb = Nz(DLookup("Abb", "Words", "Word='" & sAry(x) & "'"), "")
        If sAbb <> "" Then sStr = Replace(sStr, sAry(x), sAbb)
    Next
    Me.commentBox = sStr
    End Sub