vba
1Sub test_Click() 2 3 Dim Wb As Workbook 4 Dim Ws As Worksheet 5 Dim FilePath As String 6 Dim SheetNo As Integer 7 Dim lastRow As long 8 9 'シートの設定 10 FilePath = "C:\Users\a\Desktop\テスト.xlsx" 11 SheetNo = 1 12 13 'ワークブックを開く 14 Set Wb = Workbooks.Open(FilePath) 15 16 'シートを取得 17 Set Ws = Wb.Worksheets(SheetNo) 18 19 'ワークブックを閉じる 20 Wb.Close 21 22 '最終行取得 23 lastRow = GetLastRow(Ws.Cells) 24 25 'メモリ解放 26 Set Wb = Nothing 27 Set Ws = Nothing 28 29End Sub 30 31Public Function GetLastRow(TargetRange As Range) As Long 32 GetLastRow = TargetRange.Find("*", searchOrder:=xlByRows, searchdirection:=xlPrevious).Row 33 Exit Function 34End Function
前提・実現したいこと
ワークシートの最終行を取得する関数を作成しています。
ワークブックを閉じた後に、自作関数のGetLastRowを呼び出すと、以下のエラーが出てしまいます。
発生している問題・エラーメッセージ
実行時エラー'-2147221080(800401a8) オートメーションエラーです。
該当のソースコード
vba
1 '最終行取得 2 lastRow = GetLastRow(Ws.Cells)
試したこと
最終行取得後にcloseメソッドを記載した結果、エラーなく処理が動きました。
Wb.CloseをするとWsに格納していた情報が消えてしまうことが原因だとは思うのですが、
はっきりと分からないため、ご教授頂ければ幸いです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。