Есть ли возможность поставить OR при обращении к имени листа? - PullRequest
1 голос
/ 17 июня 2020

Я вызываю несколько книг, и все они содержат лист с именем Desk или Desk_ или _Desk. Мне нужно использовать данные из этих листов для построения сводных таблиц и так далее.

Я не могу использовать Таблицы («Рабочий стол», «Рабочий стол_» или «_Стол»). Активируйте, чтобы получить доступ к этим листам.

Есть ли способ обойти это?

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Вы также можете использовать формулы

для активации Sheet1 из книги Food =HYPERLINK("[food.xlsx]Sheet1!$A$2","goto Food.Sheet1")

Получить значение A2, если открыта книга Food =[food.xlsx]Sheet1!$A$2

Если не открыт, используйте его путь ='C:\[food.xlsx]Sheet1'!$A$2

0 голосов
/ 17 июня 2020

Используйте эту функцию (в которую вы также можете передать переменную книги), чтобы определить, существует ли лист (полученный из этого решения ):

Function WorksheetExists(shtName As String, Optional wb As Workbook) As Boolean
    Dim sht As Worksheet

    If wb Is Nothing Then Set wb = ThisWorkbook
    On Error Resume Next
    Set sht = wb.Sheets(shtName)
    On Error GoTo 0
    WorksheetExists = Not sht Is Nothing
End Function

Вы можете вызовите эту функцию из своего макроса, чтобы динамически назначить лист. Здесь следует отметить несколько моментов:

  1. Если существует более одного из ваших целевых листов, код назначит вашу переменную листа первому совпадению
  2. Возможно, вы захотите чтобы учесть возможность того, что ни один из листов не существует

Sub Test()

Dim ws As Worksheet

'Dynamically assign worksheet variable
If WorksheetExists("Sheet1") Then
    Set ws = Sheets("Sheet1")
ElseIf WorksheetExists("Sheet2") Then
    Set ws = Sheets("Sheet2")
ElseIf WorksheetExists("Sheet3") Then
    Set ws = Sheets("Sheet3")
End If

'Account for none of the sheets existing
If ws Is Nothing Then
    MsgBox "None of sheets exist"
    Exit Sub
End If

MsgBox ws.Name

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...