访问自动修改复制粘贴的 VBA 事件代码
Posted
技术标签:
【中文标题】访问自动修改复制粘贴的 VBA 事件代码【英文标题】:Access VBA event code which modifying copy-paste automaticly 【发布时间】:2017-10-11 13:43:10 【问题描述】:情况:我有一个需要填写两个坐标字段的访问表单。这些数字字段称为“纬度”和“经度”。许多坐标被复制粘贴到这些字段中。这些坐标包含“,”,表示小数点应该是“。”。否则会报错。
目标:能够通过复制粘贴来更新我的表单,而无需手动修改粘贴的字符串(“,”-->“。”)。
我查找了纬度和经度字段的 VBA 事件代码。我试过=Replace([latitude];",";".")
,但还是不行。
这是第一次尝试:
Private Sub latitude_OnDirty()
Me!latitude = Replace(Me!latitude, ",", ".")
End Sub
Private Sub longitude_OnDirty()
Me!longitude = Replace(Me!longitude, ",", ".")
End Sub
VBA 代码已被接受,但仍有错误消息:“输入的值对此字段无效。” MS Access 有效的插入类型。该字段是数字,任何带有“,”的插入都不能是数字。因此,VBA 代码中的替换命令必须在验证之前。怎么办?
【问题讨论】:
【参考方案1】:在您的经度和纬度字段中,转到事件属性并选择AfterUpdate
事件最右侧的“...”。
将弹出一个窗口,询问您要使用哪种类型的 Builder。选择“代码生成器”。
VBE 窗口将弹出并将光标放在类似Private Sub latitude_AfterUpdate()
的下方,其中latitude
将是表单上文本框的名称。在该行下方,粘贴以下代码:
Me!Latitude = Replace(Me!Latitude, ",", ".")
对经度执行相同的操作,但确保使用文本框的实际名称更新 Me!Latitude
部分。
编辑:
由于您的表单控件似乎已绑定,我认为您无法避免复制/粘贴数据中存在逗号时引发的错误。您可以这样做:
创建两个新的文本框。我会打电话给他们LonEdit
和LatEdit
。创建它们时,将它们从功能区中拖动,不要使用“使用现有字段”。这应该使“控制源”属性为空,并且当表单处于设计视图时,应该在文本框中显示“未绑定”一词。
接下来,转到LonEdit
的事件属性并使用AfterUpdate
事件的代码生成器。
这是您应该在LonEdit_AfterUpdate
事件中插入的代码:
'Test for comma
If InStr(1, Me!LonEdit, ",")>0 Then
'Replace comma with period and copy to old textbox
Me!Longitude = Replace(Me!LonEdit, ",", ".")
Else
'No comma, just copy to old textbox
Me!Longitude = Me!LonEdit
End If
'Clear the new textbox
Me!LonEdit = ""
为新的纬度框做类似的事情:
'Test for comma
If InStr(1, Me!LatEdit, ",")>0 Then
'Replace comma with period and copy to old textbox
Me!Latitude = Replace(Me!LatEdit, ",", ".")
Else
'No comma, just copy to old textbox
Me!Latitude = Me!LatEdit
End If
'Clear the new textbox
Me!LatEdit = ""
完成后,尝试复制/粘贴到新的文本框中,然后在完成后将它们从标签中取出。这应该替换逗号并复制到旧文本框而不会引发错误。不是很好的解决方案,但这是我目前能想到的最好的解决方案。祝你好运!
【讨论】:
VBA 代码已被接受,但仍有错误消息:“输入的值对此字段无效。” MS Access 有效的插入类型。该字段是数字,任何带有“,”的插入都不能是数字!因此,VBA 代码中的替换必须在验证之前。怎么样? 这样的错误:s3.amazonaws.com/ssi-article-images/office2010/access2010/… 尝试将代码从AfterUpdate
事件移动到OnDirty
事件。
嗯,这些字段在表格或表单控件上是否有验证规则?另外,文本框的控件源属性是空白还是不空白?
没有字段验证规则。我没有添加任何表单控件。所以,我想没有。以上是关于访问自动修改复制粘贴的 VBA 事件代码的主要内容,如果未能解决你的问题,请参考以下文章