如何解决MS Access HyperlinkAddress 携带上次使用的 URL
我有一个表单,用户可以在其中将公司的网站 (URL) 输入到文本框中。命令按钮位于文本框旁边,以便可以在浏览器中打开输入的 URL。当文本框中有一个 URL 时,它工作得很好。但是,当文本框为空时,会出现“再试一次”的 MsgBox(应该如此),但它不会在用户单击“确定”后停止子例程,而是打开最近打开的 URL。当单击 MsgBox OK 按钮时,如何让子例程简单地停止?我猜 URL 被存储在某个地方。在哪里?我该如何清除它?
Private Sub cmd_websitelink_Click()
'***********************************************
'** Opens browser for Website Link
'***********************************************
DoCmd.SetWarnings False
Dim sitestring As String
sitestring = Me.Website & vbNullString
If Len(sitestring) = 0 Then GoTo ErrorHandler
On Error GoTo ErrorHandler
Dim ctl As CommandButton
Set ctl = Me!cmd_websitelink
With ctl
.HyperlinkAddress = sitestring
End With
Exit Sub
GoTo Finish
ErrorHandler:
MsgBox "Enter a valid URL in the website Box and try again."
Finish:
End Sub
解决方法
您在过程中设置按钮的 .HyperlinkAddress
属性。
此属性将保持设置,直到您关闭表单或覆盖该属性。
所以你需要把这个添加到错误案例中:
Me!cmd_websitelink.HyperlinkAddress = ""
您可以简单地在 Click 事件中打开超链接,而不是所有这些,请参见此处:
How to open a URL from MS Access with parameters
我无法从您的代码中分辨出 Me.Website 的设置位置(是否来自 DB 字段?所有这些代码都在表单中链接到记录吗?Me.Website 是否是链接到您说的文本框的字段名用户正在输入文本?)
我猜测问题的原因是,如果用户更改了文本框中的文本但尚未保存,并且当 txtbox 失去焦点时您没有自动保存,那么表单仍在使用文本框中的 原始 值。要修复它,请使用 .text 而不是 .value 。
取而代之的是:
sitestring = Me.Website & vbNullString
这样做:
sitestring = nz(Me.Website.text,"")
.text 捕获文本框中的当前文本,无论它是否已提交,而 .value 仅检索提交的值。并且上面的代码还覆盖了针对具有空值的表单或记录,通过使用 nz 将空值替换为空字符串。
此外,当您处理字符串时,不妨使用字符串逻辑。而不是这样:
If Len(sitestring) = 0 Then GoTo ErrorHandler
这样做:
If sitestring = "" Then GoTo ErrorHandler
此外:在点击“Goto Finish”之前,您正在运行“Exit Sub”;删除退出子的这两种方法之一。
此外,如果您所做的只是设置超链接地址,那么几乎所有代码都可以简化为这样,使用适当的缩进使其整洁:
Private Sub cmd_websitelink_Click()
'***********************************************
'** Opens browser for Website Link
'***********************************************
Me.txtWebsite.SetFocus 'Else VBA errors when accessing .text
sitestring = nz(Me.Website.text,"") 'NZ to replace null values with ""
if sitestring = "" Then
MsgBox "Enter a valid URL in the website box and try again."
else
Me!cmd_websitelink.HyperlinkAddress = sitestring
end if
end sub
(来自评论)测试 _Click() 命令按钮是否使用旧版本的 .HyperlinkAddress 作为其源,而不是这个:
Me!cmd_websitelink.HyperlinkAddress = sitestring
试试这个:
explorer.exe sitestring
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。