我尝试使用以下代码选择文件并将其路径和文件名写入文本框。我尝试使用代号为TESTAREA
的工作表但我总是收到错误类型不匹配。
我使用以下程序来使用表格中的功能TEST_AREA(TESTAREA)表格名称(代码名称)
Private Sub CommandButton1_Click()
Call myFunctions.SelectFile(TESTAREA, "*.txt", TextBox1)
End Sub
这是功能
Function SelectFile(ByVal strSheetName As Worksheet, strFilterExt As String, strTextBox As TextBox)
Dim fdo As Office.FileDialog
Set fdo = Application.FileDialog(msoFileDialogFilePicker)
With fdo
.InitialFileName = AUTOMBS.path
.AllowMultiSelect = False
.Title = "Please select the file."
.Filters.Clear
.Filters.Add "All Files", strFilterExt
If .Show = True Then
strSheetName.strTextBox.Value = .SelectedItems(1)
End If
End With
End Function
你能帮助我,我错了吗?
答案 0 :(得分:1)
这对我有用。我将 ActiveX TextBox 添加到 Sheet1 并使用了您的代码。它给了我一个类型不匹配,直到我改变了函数以取代MSForms.TextBox
。
Sub Test()
Debug.Print GetName(Sheet1.TextBox1)
End Sub
Function GetName(tb As MSForms.TextBox)
GetName = tb.Value
End Function
试试这个。我将其更改为Sub
,因为您没有向Function
返回任何内容!
Sub SelectFile(ByVal strSheetName As Worksheet, strFilterExt As String, strTextBox As MSForms.TextBox)
Dim fdo As Office.FileDialog
Set fdo = Application.FileDialog(msoFileDialogFilePicker)
With fdo
.InitialFileName = AUTOMBS.path
.AllowMultiSelect = False
.Title = "Please select the file."
.Filters.Clear
.Filters.Add "All Files", strFilterExt
If .Show = True Then
strTextBox.Value = .SelectedItems(1)
End If
End With
End Sub