1

私は次のように関数を書き込もうとしています:

Function getEntityCode(fileName As String) As Range
Dim entitySheet As Worksheet
Dim c As Range
Dim i As Integer
Dim valid As Boolean
Dim finalRow As Integer
Dim finalCol As Integer

Set entitySheet = Workbooks("OHUploads.xlsm").Worksheets("EntityCodes")
finalRow = entitySheet.Cells(Application.Rows.Count, 1).End(xlUp).Row
On Error GoTo ErrHandler:
With entitySheet
   Set c = .Range(.Cells(1, 3), .Cells(1, finalCol))
End With
valid = False
ErrHandler:
Debug.Print Error(Err)
If valid = False Then
   Set getEntityCode = entitySheet.Range(entitySheet.Cells(1, 3), entitySheet.Cells(1, finalCol))
Else
   Set getEntityCode = c
End If
End Function

ただし、どのように実行しても、ステートメントを実行してSet c = .Range(.Cells(1、3)、.Cells(i、finalCol))とすると、常にerrHandlerになり、常に次のように表示されます。アプリケーション定義またはオブジェクト定義のエラー

私はすべてを明確に定義したと思いました、私がどこで間違ったことをしたのかわかりません、誰かがこれで私を助けてくれますか、どうもありがとうございました。

4

1 に答える 1

2

の値を設定することはないためfinalCol、デフォルトでは0になります。

Cells(1,0)セルは0ベースではなく1ベースであるため、呼び出しはエラーをスローします。というか、行または列0は存在しません。

次の行を使用するか、1を使用することをお勧めしますfinalCol = 1

于 2012-10-10T19:54:46.197 に答える