2016-06-25 15 views
0

誰かが私を助けてくれますか?別のブックでシートを参照しようとしていますが、関数は#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#を返します。エラー。問題は私がシートを参照しようとしているところだと思います。私は以前に試したことがあり、ワークブックを参照するだけでエラーは返されませんでした。

+0

あなたの目標は何ですか? RangeまたはRangeの値への参照を返しますか?ところで、あなたはあなたの関数を使用していない "Ct"パラメータを渡している – user3598756

+0

私の目標は、範囲の値を返すことです。 これでビルドされ、Ctパラメータは将来使用されます。私はもう少し先に行く前に、まずこのビットを働かせたいと思います。 – JeniD

答えて

0

私は

Function WLR(CN, Ct) as string 
+0

ありがとうございましたが、これは動作しませんでした – JeniD

+0

私はあなたのコードを試して、別のブックを参照しようとしました。あなたのコードは正常に動作するようです。私は#VALUEを得ることができる唯一の方法です!エラー値は、セル(i、6)に#VALUE!エラー自体。 私はExcel 2013を使用しています – infacp

+0

私はExcel 2013も使用しています。私はシートを同じブックにコピーしようとしたときとそれが働いたときのどちらでも、セルの内容にすることはできません。 それを稼働させるために何か他に修正しましたか? Office 365を使用している可能性がありますか? – JeniD

0

がそれを手に入れたとして、あなたの関数が定義されているはずだと思う - オリジナルワークブックを開いたとき、私は、バックグラウンドで他のブックを開いたように、あなたが関数内で別のブックを開くことができないことが判明します終了時に保存を促すことなく閉じます。

関連する問題