アセットと概要の2つのワークシートがあります。
関数はすべてモジュールに入れられます。
Public Function GetLastNonEmptyCellOnWorkSheet(Ws As Worksheet, Optional sName As String = "A1") As Range
Dim lLastRow As Long
Dim lLastCol As Long
Dim rngStartCell As Range
Set rngStartCell = Ws.Range(sName)
lLastRow = Ws.Cells.Find(What:="*", After:=Ws.Range(rngStartCell), LookIn:=xlFormulas, _
Lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
MatchCase:=False).Row
lLastCol = Ws.Cells.Find(What:="*", After:=Ws.Range(rngStartCell), LookIn:=xlFormulas, _
Lookat:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
MatchCase:=False).Column
Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol))
End Function
ワークシートの概要から、私は次のように呼びます。
Set RngAssets = GetLastNonEmptyCellOnWorkSheet(Worksheets("Assets"), "A1")
しかし、常にエラーが発生します。
VBA:ランタイム1004の取得:オブジェクト '_Worksheet'のメソッド 'Range'が失敗しました
ライン上:
Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol))
ワークシート資産にデータがあります。最後に使用されたセルはW9です(lLastRow = 9およびlLastCol = 23)。
これが機能しない理由はありますか?
ブローコードを使用したところ、同じエラーが発生しました。
Dim x As Integer
Range(Cells(2, x + 13))
コードをブローに変更すると、エラーが消えました。
Dim x As Integer
Range(Cells(2, x + 13).Address)