VBA: ссылку на лист в другой книге, которая может быть закрыта или не закрыта

Пожалуйста, кто-нибудь может мне помочь? Я пытаюсь ссылаться на лист в другой книге, но функция возвращает значение #VALUE! ошибка. Я думаю, что этот бит вызывает ошибку:

'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 #! ошибка. Я думаю, что проблема заключается в том, где я пытаюсь ссылаться на лист. Я пробовал раньше, просто ссылаясь на книгу и не возвращаю ошибку.

Я думаю, что ваша функция должна быть определена как

 Function WLR(CN, Ct) as string 

Получил это – оказывается, что вы не можете открыть другую книгу в рамках функции, поэтому я открыл другую книгу в фоновом режиме, когда открыла оригинальная книга, а затем закрыла ее, не предлагая сохранить при выходе.

Interesting Posts
Давайте будем гением компьютера.