0

我对 VBA 很陌生,所以这可能是一个愚蠢的问题。我的用户窗体上有 2 个按钮,一个用于搜索文件,一个用于输入。(这只是我正在做的事情的简化)。每次我收到错误“下标超出范围”,但我不知道为什么。谁能帮帮我吗?非常感谢

Public file as Variant

Private Sub cmdBrowse_Click()
file = Application.GetOpenFilename
If file = False Then
    MsgBox "There is no file selected.", vbCritical, "Warning"
End If
End Sub

Private Sub cmdInput_Click()
Cells(2, 2).Value = Workbooks(file).Worksheets(1).Cells(2, 2).Value
End Sub
4

1 回答 1

0

从 Excel 帮助 - “显示标准的打开对话框并从用户那里获取文件名,而不实际打开任何文件。” 您需要打开工作簿,例如:

Private Sub cmdBrowse_Click()
file = Application.GetOpenFilename
If file = False Then
    MsgBox "There is no file selected.", vbCritical, "Warning"
    Exit Sub  
End If
Workbooks.Open file
End Sub

编辑:Application.Workbooks属性不采用完整的文件路径,由GetOpenFileName. 所以在第二个子中你不想要整个文件路径。您的代码应该只从完整路径中提取文件名:

Private Sub cmdInput_Click()
Dim FileName as string

FileName = Mid(file,InStrRev(file,Application.PathSeparator)+1,99)
Cells(2, 2).Value = Workbooks(FileName).Worksheets(1).Cells(2, 2).Value
End Sub
于 2012-12-09T00:58:12.590 回答