这是我的第一次试用vba。
在表格中,我有2个按钮。一个用于浏览,选择文件,另一个用于将excel导入表格。
我试过下面的代码。它不起作用。我需要的是将filepath
变量的值从 cmdBrowse_Click
sub 传递到 cmdImportFunctions_Click
sub。
提前致谢,最好的问候
我的问题:
filepath
变量从 cmdBrowse_Click
sub 传递到 cmdImportFunctions_Click
sub(,如果可能的话 ,我想学习没有全局变量的方式)cmdBrowse_Click:浏览并获取文件的路径
Private Sub cmdBrowse_Click()
Dim dialog As Object
Dim filePath As String
Set dialog = Application.FileDialog(msoFileDialogFilePicker)
With dialog
.AllowMultiSelect = False
.Title = "Please select the functions excel to import"
.Filters.Clear
.Filters.Add "Excel Newer", "*.XLSX"
.Filters.Add "Excel Older", "*.XLS"
If .Show = True Then
filePath = .SelectedItems.Item(1)
txtExcelFile.Value = filePath
Call cmdImportFunctions_Click(filePath)
Else
MsgBox "No file was selected", vbOKOnly
txtExcelFile.Value = ""
End If
End With
End Sub
cmdImportFunctions_Click:导入数据库
Private Sub cmdImportFunctions_Click(ByVal filePath As String)
MsgBox filePath, vbOKOnly
End Sub
答案 0 :(得分:1)
如错误消息所示,必须声明On Click
事件过程如下:
Private Sub cmdButton_Click()
没有任何参数。您无法更改此声明(或者您将收到编译错误)。
如果您想直接从cmdBrowse
启动导入,则不需要"导入"按钮。创建一个"标准"表单模块中的私有过程,而不是事件过程。
Private Sub DoImport(ByVal filePath As String)
MsgBox filePath, vbOKOnly
End Sub
并在cmdBrowse_Click()
中调用它。
否则,您可以将文件路径存储在模块变量中,也可以存储在表单上的文本框中 - 如果“浏览”按钮仅选择文件,这将是通常的设计。
修改:我发现您已经拥有:txtExcelFile.Value = filePath
我建议使用Me!txtExcelFile.Value = filePath
来表示这是一个表单控件。
然后简单地说:
Private Sub cmdImportFunctions_Click()
Dim filePath As String
filePath = Nz(Me!txtExcelFile.Value, "")
If filePath = "" Then
MsgBox "Please select a file first"
Else
MsgBox filePath, vbOKOnly
End If
End Sub