Sub или Function не определены при вызове модуля на лист - PullRequest
0 голосов
/ 31 марта 2020

У меня есть скрипт Worksheet_Change, который я хотел бы разобрать в модули. Закомментированный раздел был перемещен в модуль с подпрограммой "Alluma_Change". Я получаю ошибку «sub или function notfined» при вызове. Мне нужно передать это моей команде, поэтому я решил, что разбиение кода на модули позволит им просто импортировать, когда есть обновления, но, возможно, это невозможно. Спасибо!

Option Explicit

Private Sub Worksheet_Change(ByVal target As Range)

    If Not Intersect(target, Range("F1")) Is Nothing Then

        If Range("F1").Value = "Both PT and Trad" Then
            Rows("37:72").EntireRow.Hidden = False
        End If

        If Range("F1").Value = "Pass-Through Only" Then
            Rows("37:53").EntireRow.Hidden = False
            Rows("54:72").EntireRow.Hidden = True
        End If

        If Range("F1").Value = "Traditional Only" Then
            Rows("37:53").EntireRow.Hidden = True
            Rows("54:72").EntireRow.Hidden = False
        End If

    End If

'Dim mail_margin As Range, specialty_margin As Range, x() As String
'Set mail_margin = Range("D15"): Set specialty_margin = Range("D16")
'
'    If Not Intersect(target, Range("H3")) Is Nothing Then
'
'        If Range("H3").Value = "Alluma" Then
'            mail_margin.Formula = mail_margin.Formula & "*0"
'            specialty_margin.Formula = specialty_margin.Formula & "*0"
'        Else
'            x() = Split(Range("d15").Formula, "*")
'            mail_margin.Formula = x(0) & "*" & x(1)
'            x() = Split(Range("d16").Formula, "*")
'            specialty_margin.Formula = x(0) & "*" & x(1)
'        End If
'
'   End If

Call Alluma_Change

End Sub

Модуль для справки:

Option Explicit

Private Sub Alluma_Change()

Dim mail_margin As Range, specialty_margin As Range, x() As String
Set mail_margin = Range("D15"): Set specialty_margin = Range("D16")

    If Not Intersect(target, Range("H3")) Is Nothing Then

        If Range("H3").Value = "Alluma" Then
            mail_margin.Formula = mail_margin.Formula & "*0"
            specialty_margin.Formula = specialty_margin.Formula & "*0"
        Else
            x() = Split(Range("d15").Formula, "*")
            mail_margin.Formula = x(0) & "*" & x(1)
            x() = Split(Range("d16").Formula, "*")
            specialty_margin.Formula = x(0) & "*" & x(1)
        End If

End Sub

1 Ответ

0 голосов
/ 31 марта 2020

Вы должны:

  1. переместить Alluma_Change() в стандартный модуль
  2. сделать его Public вместо Private
  3. поставить Application.EnableEvents=False в начало кода события
  4. поставить Application.EnableEvents=True внизу кода события
  5. исправить любые неопределенные переменные в Alluma_Change()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...