Какой диапазон я должен сделать? - PullRequest
0 голосов
/ 10 октября 2018

Просто интересно, почему каждый раз, когда я отлаживаю, оно будет появляться

Runtime Error 1004;Метод 'Range' объекта '_Global' не удался

, и он будет выделен в строке

 DataSH.Range("A2").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range("Data!$L$8:$L$9"), CopyToRange:=Range("Data!$N$8:$T$8"), _
            Unique:=False

Если кодирование находится в формах, каким должен быть диапазон?И диапазон упоминается в основных данных.Может кто-нибудь мне помочь?

Private Sub cmdContact_Click()
        Dim DataSH As Worksheet
        Set DataSH = Sheet1
        DataSH.Range("L8") = Me.cboHeader.Value
        DataSH.Range("L9") = Me.txtSearch.Text
        DataSH.Range("A2").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("Data!$L$8:$L$9"), CopyToRange:=Range("Data!$N$8:$T$8"), _
        Unique:=False
        lstEmployee.RowSource = Sheet1.Range("outdata").Address(external:=True)
    End Sub

1 Ответ

0 голосов
/ 10 октября 2018
Range("Data!$L$8:$L$9")

Этот неквалифицированный Range вызов фактически неявно квалифицирован как ActiveSheet, через немного член по умолчанию обман инемного косвенности.Для простоты мы можем сказать, что это будет эквивалентно:

ActiveSheet.Range("Data!__:__")

Есть проблема: строка адреса содержит имя листа, а Range, который мы хотим получить с этой строкой,взяты из того, что есть ActiveSheet.Если есть совпадение, нам повезло.В противном случае, бум.

Итак, мы здесь.Это работает?

ActiveSheet.Range("Data!$L$8:$L$9")

Поскольку этот приведенный в качестве примера код генерирует ту же ошибку, что и вы, по той же причине:

Sheet1.Range("Sheet2!A1")
...