MS Access HyperlinkAddress 继承上次使用的 URL
MS Access HyperlinkAddress carries over the last used 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
我无法从你的代码中看出 Me.Website 是在哪里设置的(它来自数据库字段吗?所有这些代码都以表格形式链接到记录吗?Me.Website 是否链接了一个字段名到你说用户输入文本的文本框?)
我猜测问题的原因是,如果用户更改了文本框中的文本但尚未保存,并且当 txtbox 失去焦点时您没有自动保存,那么,表单仍在使用文本框中的 original 值。要修复它,请使用 .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”之前运行“退出子程序”;删除这两种退出子程序的方法之一。
此外,如果您所做的只是设置超链接地址,那么几乎所有代码都可以简化为这样,使用适当的缩进使其整洁:
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
您在程序中设置了按钮的 .HyperlinkAddress
属性。
此 属性 保持设置,直到您关闭表单或覆盖 属性。
因此您需要将此添加到错误案例中:
Me!cmd_websitelink.HyperlinkAddress = ""
除此之外,您只需在 Click 事件中打开超链接,请参见此处:
我有一个表单,用户可以在其中将公司网站 (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
我无法从你的代码中看出 Me.Website 是在哪里设置的(它来自数据库字段吗?所有这些代码都以表格形式链接到记录吗?Me.Website 是否链接了一个字段名到你说用户输入文本的文本框?)
我猜测问题的原因是,如果用户更改了文本框中的文本但尚未保存,并且当 txtbox 失去焦点时您没有自动保存,那么,表单仍在使用文本框中的 original 值。要修复它,请使用 .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”之前运行“退出子程序”;删除这两种退出子程序的方法之一。
此外,如果您所做的只是设置超链接地址,那么几乎所有代码都可以简化为这样,使用适当的缩进使其整洁:
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
您在程序中设置了按钮的 .HyperlinkAddress
属性。
此 属性 保持设置,直到您关闭表单或覆盖 属性。
因此您需要将此添加到错误案例中:
Me!cmd_websitelink.HyperlinkAddress = ""
除此之外,您只需在 Click 事件中打开超链接,请参见此处: