0

私はVBAを初めて使用するので、これはばかげた質問かもしれません..ユーザーフォームには2つのボタンがあり、1つはファイルを検索し、もう1つは入力用です。(これは、私がやっていることを単純化したものです)。「下付き文字が範囲外です」というエラーが表示されるたびに、理由がわかりません。誰でも私を助けてもらえますか?どうもありがとう

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。したがって、2番目のサブでは、ファイルパス全体は必要ありません。コードは、フル パスからファイルの名前だけを抽出する必要があります。

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 に答える