誰かが私を助けてくれますか?別のブックでシートを参照しようとしていますが、関数は#VALUEを返します。エラー。私はそれがエラーの原因となっている。このビットだと思う:VBA:別のブックのシートを参照して閉じてもしなくてもかまいません
'Set variable for other Workbook
Dim oh As Workbook
'This filepath may need to be changed if the file is moved
Set oh = Workbooks.Open("C:\Filepath\Filename.xlsx")
'Set variable for cs sheet in the other workbook
Dim cs As Worksheet
Set cs = oh.Worksheets("cs")
全体のコードはここにある:
Option Explicit
Function WLR(CN, Ct)
'Turn off screen updating
Application.ScreenUpdating = False
''Change this to refer to sheet in other workbook later.
''For now, it refers to the cs sheet on this workbook
'Dim cs As Worksheet
'Set cs = ThisWorkbook.Sheets("cs")
'Set variable for other Workbook
Dim oh As Workbook
'This filepath may need to be changed if the file is moved
Set oh = Workbooks.Open("C:\Filepath\Filename.xlsx")
'Set variable for cs sheet in the other workbook
Dim cs As Worksheet
Set cs = oh.Worksheets("cs")
'Get Info from cs sheet
Dim i As Integer
i = 2
With cs
Do While i <= .Rows.Count 'Check you haven't exceeded the limit
If .Cells(i, 2) <> "" Then 'Check the cell isn't blank
If .Cells(i, 2) = CN Then 'Check if course name is in list
Exit Do 'Exit loop with i set to correct row if CN is found
End If
Else
WLR = "" 'Return blank if course name not found
'Turn on screen updating
Application.ScreenUpdating = True
Exit Function
End If
i = i + 1
Loop
'Turn on screen updating
Application.ScreenUpdating = True
'Set Result
WLR = .Cells(i, 6)
End With
End Function
私は、他のワークシートを参照について少しコメントアウト、このワークブックにシートをコピーしようとしましたこのワークブック内のcsシートについてのコメントを外してください。これはうまくいきましたが、実際には他のワークブックを参照する必要があります。何か案は?私はここで検索し、シートインデックスを使用するなど多くのことを試しましたが、今は本当に立ち往生しています。
EDIT:関数はクラッシュしないので、VALUE#を返します。エラー。問題は私がシートを参照しようとしているところだと思います。私は以前に試したことがあり、ワークブックを参照するだけでエラーは返されませんでした。
あなたの目標は何ですか? RangeまたはRangeの値への参照を返しますか?ところで、あなたはあなたの関数を使用していない "Ct"パラメータを渡している – user3598756
私の目標は、範囲の値を返すことです。 これでビルドされ、Ctパラメータは将来使用されます。私はもう少し先に行く前に、まずこのビットを働かせたいと思います。 – JeniD