使用 MS Access VBA 更改标签的默认标题

Posted

技术标签:

【中文标题】使用 MS Access VBA 更改标签的默认标题【英文标题】:Change the default caption of a label with MS Access VBA 【发布时间】:2019-05-16 19:43:34 【问题描述】:

我的 MS Access 主窗体上有一个标签,需要显示导出文件的保存位置。我有一个 [编辑] 按钮,单击该按钮会弹出一个文件对话框,并允许用户选择要导出到的文件夹。选择文件夹后,标签标题将更改为用户选择的文件夹的位置。这非常有效。我唯一的问题是,当数据库关闭并重新打开时,标签标题会回到原来的标题(在这种情况下,可以说它只是说 TEST)。我想拥有它,以便在更改标签标题时保持这种状态,除非用户单击 [编辑] 按钮并再次更改位置。下面是我正在使用的 VBA 代码。

提前感谢您的帮助!

Sub SetFileLocation()
    Dim Ret

    strUserName = Environ("UserName")

    strPath = "C:\documents and settings\" & strUserName & "\Desktop"


    '~~> Specify your start folder here
    Ret = BrowseForFolder(strPath)

    Forms.frmmainform.lblFolderLocation.Caption = strFolderLocation



End Sub

Function BrowseForFolder(Optional OpenAt As Variant) As Variant
     'Function purpose:  To Browser for a user selected folder.
     'If the "OpenAt" path is provided, open the browser at that directory
     'NOTE:  If invalid, it will open at the Desktop level

    Dim ShellApp As Object

     'Create a file browser window at the default folder
    Set ShellApp = CreateObject("Shell.Application"). _
    BrowseForFolder(0, "Please choose a folder", 0, OpenAt)



     'Set the folder to that selected.  (On error in case cancelled)
    On Error Resume Next
    BrowseForFolder = ShellApp.self.Path
    On Error GoTo 0
Debug.Print BrowseForFolder
strFolderLocation = BrowseForFolder
Debug.Print strFolderLocation
     'Destroy the Shell Application
    Set ShellApp = Nothing

     'Check for invalid or non-entries and send to the Invalid error
     'handler if found
     'Valid selections can begin L: (where L is a letter) or
     '\\ (as in \\servername\sharename.  All others are invalid
    Select Case Mid(BrowseForFolder, 2, 1)
    Case Is = ":"
        If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid
    Case Is = "\"
        If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid
    Case Else
        GoTo Invalid
    End Select

    Exit Function

Invalid:
     'If it was determined that the selection was invalid, set to False
    BrowseForFolder = False
End Function

【问题讨论】:

这需要在设计视图中修改表单。您需要做的是在表单打开时检索“最后一个”项目并设置控件。这意味着将数据保存在某处以便可以检索。 我真的不希望必须设置一个表来存储数据,是否可以将它存储在像标签一样的控件中?我以为我过去在另一个项目上做过类似的事情,但我似乎可以找到它。 没有。标签中的“保存”正在更改 Caption 属性,这需要设计视图并保存修改后的设计。 【参考方案1】:

虽然最好的方法是将值存储在某个表中,但您可以将以前的值保存在自定义表单属性中。 首先创建一个表单属性(在即时窗口中):

CurrentProject.AllForms ("Your form name").Properties.Add "LastFolder", ""

然后像这样将它保存在您的子中

...
Me.lblFolderLocation.Caption = strFolderLocation
CurrentProject.AllForms("Your form name").Properties("LastFolder").Value = strFolderLocation

然后在Load事件中恢复最后一个值:

Private Sub Form_Load()
    Me.lblFolderLocation.Caption  = CurrentProject.AllForms("Your form name").Properties("LastFolder")
End Sub

【讨论】:

非常感谢,这正是我想要的。我不想必须创建一个包含一条记录的表并不断编辑该记录。效果很好,感谢您的帮助!

以上是关于使用 MS Access VBA 更改标签的默认标题的主要内容,如果未能解决你的问题,请参考以下文章

MS Access中的VBA中不接受变量名称

如何在ms-access vba中单击命令按钮单击以更改代码以更改控件属性

可以通过 VBA 更改 MS Access 子表单字段吗?

更改 MS Access 元素的默认样式

使用 VBA 将 MS Access 报告打印到 .xps 文件

在 VBA 中查找适用于 MS Access 和 MS Excel 的应用程序目录路径