Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: GWolf от 27.08.2018, 15:52

Название: Функция Intersect и именованный диапазон
Отправлено: GWolf от 27.08.2018, 15:52
Доброго всем времени суток!

Target - ячейка
Range("MatertialS") - именованный диапазон

Написал такой код:        If Not Intersect(Target, Range("MatertialS")) Is Nothing Then
            InputBox ""
        End If
, а он не работает. Выдает ошибку.
Может кто подскажет: чего не так? С именованными диапазонами только учусь еще работать.
Название: Re: Функция Intersect и именованный диапазон
Отправлено: boa от 27.08.2018, 16:04
Добрый день,
Все правильно
а от куда вызываете?
например в модуле листа все работает
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Intersect(Target, Range("MatertialS")) Is Nothing Then
            InputBox ""
        End If
End Sub
Название: Re: Функция Intersect и именованный диапазон
Отправлено: _Boroda_ от 27.08.2018, 16:25
Именованный диапазон какой? Уровня книги или уровня листа?Это если Excel 2007 и больше.
И покажите в файле как имя считается.

И да, откуда вызывается макрос и на какой лист ссылается имя
Название: Re: Функция Intersect и именованный диапазон
Отправлено: GWolf от 28.08.2018, 06:07
Спасибо, друзья, за отклик.

Цитата: _Boroda_ от 27.08.2018, 16:25
И покажите в файле как имя считается.
вот это не понял  :'(


Excel 14.0.7212 MS Office 2010

Этот код Private Sub Worksheet_Change(ByVal Target As Range)
    Dim nR As Long, nC As Long, lLastRow As Long
   
    lLastRow = ActiveSheet.UsedRange.Rows.Count
   
    nR = Target.Row: nC = 5
    If Cells(nR, nC) <> "" And Cells(nR, nC + 2) = "" And nR < lLastRow - 9 Then
Application.EnableEvents = False
        Cells(nR, nC + 2) = "*"
Application.EnableEvents = True
        If Not Intersect(Target, Range("MatertialS")) Is Nothing Then
            InputBox ""
        End If
    ElseIf Cells(nR, nC) = "" And Cells(nR, nC + 2) <> "" And nR < lLastRow - 9 Then
Application.EnableEvents = False
        Cells(nR, nC + 2).Clear
Application.EnableEvents = True
    End If

    nR = 0: nC = 0: lLastRow = 0
End Sub

в модуле листа "L_Calc"

На скрепке файл проекта.
На второй скрепке - сообщение об ошибке. Ругается на эту строку: If Not Intersect(Target, Range("MatertialS")) Is Nothing Then
Название: Re: Функция Intersect и именованный диапазон
Отправлено: boa от 28.08.2018, 10:09
Range("MaterialS") <> Range("MatertialS")