Вызов Sub из кнопки формы - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь вызвать подпункт с текущего листа с помощью кнопки пользовательской формы, но получаю следующую ошибку;«Ошибка компиляции: Sub или Function не определены».

Это код

Private Sub form_addDate_clickSubmit_Click()
    Dim WKB As Workbook
    Dim SHT_EDIT As Worksheet
    Set WKB = ActiveWorkbook
    Set SHT_EDIT = WKB.Sheets("EDIT")
    Call loadData
    'Tried various other ways such as SHT_EDIT.loadData
End Sub

Подпрограмма loadData общедоступна.

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Вот как я кодирую свои командные кнопки на листе:

Option Explicit
Public WS As Worksheet     ' global Worksheet object

Private Sub InsertNextWeek_Button1_Click()
'Button to call the Insert Next Week subprocedure

  'Save the current active worksheet
  Set WS = ThisWorkbook.ActiveSheet

  'Run procedure to Insert 7 new rows for Next Week
  Call Insert_NextWeek

  'Make this worksheet is left as the active worksheet
  WS.Activate

  'clear worksheet variable
  Set WS = Nothing
End Sub

Private Sub PublishRunStats_Button6_Click()
'Button to call the Publish RunStats subprocedure

  'Save the current active worksheet
  Set WS = ThisWorkbook.ActiveSheet

  'Run procedure to Save the Run Stats worksheet to a new workbook
  Call Publish_RunStats_Sheet

  'Make this worksheet is left as the active worksheet
  WS.Activate

  'clear worksheet variable
  Set WS = Nothing
End Sub

Вызываемые подпроцедуры закодированы как Открытые в Модуле 1 той же Рабочей книги.
Глобальный объект WS используется в каждой подпрограмме командной кнопки, чтобы гарантировать, что фокус моего отображения снова окажется на том же рабочем листе, на котором только что нажата командная кнопка.

0 голосов
/ 12 ноября 2018

Вероятно, ваш Sub loadData находится в модуле листа.

Вы можете вызвать его с помощью [SHT_EDIT].loadData, предполагая, что CodeName листа равно SHT_EDIT (имя кода - это имя, отображаемое в проводнике проекта VBA, а не имя листа в Excel.

Лучшее решение - переместить саб в обычный модуль.

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