Как я могу использовать sub из другой рабочей книги

В книге PERSONAL.XLSB у меня есть этот код:

Public Sub Password(ByVal Target As Range) a = "" For n = 1 To Len(Target) a = a & "*" Next n Target.NumberFormat = """" & a & """;""" & a & """;""" & a & """;""" & a & """" End Sub 

В моей новой книге у меня есть этот код:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Info.Range("AA9").Address Then Workbooks("PERSONAL.XLSB").Password Target End If End Sub 

Я продолжаю получать сообщение об Compile error: Invalid use of property

Вот как вы запускаете макрос из своей личной книги:

 Application.Run "PERSONAL.XLSB!Password", Target 

[EDIT] Стоит отметить, что вместо цикла для построения строки * вы можете сделать это:

 Public Sub Password(ByVal Target As Range) Dim sMask as String sMask = Mid(WorksheetFunction.Rept(";""" & String(Len(Target.Value), "*") & """", 4), 2) Target.NumberFormat = sMask End Sub 

Метод Application.Run, показанный тиграватаром, работает динамически (т. Е. Все разрешено во время выполнения), и это самый простой способ быстро вызвать некоторую процедуру.

Если вы получаете доступ к множеству процедур или используете больше функций или подсетей, вы можете добавить ссылку на имя проекта Personal.xlsb (через Инструменты> Ссылки). Вы должны переименовать кодовое имя проекта VBA Personal.xlsb из значения по умолчанию «VBAProject» в нечто уникальное, например «PersonalLibrary» или что-то еще. Затем вы добавляете ссылку на PersonalLibrary.

Затем вы получаете полный доступ ко всем публичным функциям и подсистемам в стандартных модулях, любых листах и ​​классах, раннем привязке к классам и доступе к полям, свойствам и событиям.

Это дополнительно включает в себя преимущества intellisense и стандартных проверок времени компиляции, таких как проверка сигнатур методов (то есть, что аргументы функции или sub соответствуют тому, что это должно быть) и статическая типизация.

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

В вашем случае вы можете получить к нему доступ, добавив ссылку, так же просто, как PersonalLibrary.Password(target)

  • Ошибка отчета в CSV при потоковой передаче клиенту
  • как выбрать раздел диапазонов
  • Захват ошибок подключения
  • Application.WorksheetFunction.VLookup Нет ошибки совпадения
  • код excel vba, развращающий мой файл последовательно после нескольких прогонов
  • ошибка несоответствия типа excel в определении времени
  • среднее значение при обработке ошибок пустых значений
  • Как автоматически остановить макрос VBA?
  • Ошибка при обработке VBA: когда ошибок нет?
  • Прерывание макроса для обработки нажатий клавиш для плавного пользовательского интерфейса
  • Как обрабатывать необязательные атрибуты XML в VBA?
  • Interesting Posts

    Создавайте все возможные комбинации вариантов из взаимоисключающих опций

    Не удалось импортировать из файла Excel XLSX

    Диапазон массивов и IsEmpty Если тогда инструкция VBA. Перезаписывает все вместо выборочной вставки

    Как избежать большей ширины границы в excel, отчет SSRRS?

    Динамический именованный диапазон Excel на основе двух столбцов

    Скопируйте и добавьте строки в новый лист, если условие

    Код VBA для выполнения действий на всех листах и ​​книгах с неизвестными именами

    Ячеистые ячейки Excel, основанные на содержимом списка на другом листе

    Excel: как анализировать ячейки с несколькими значениями?

    Текст в столбцы Назначение VBA на новый лист

    Сравнение нескольких ячеек и возвращающих значений

    Как я могу создать отношения в excel для нескольких столбцов?

    При группировке по итогу удалите строки без слова «Всего» в нем

    excel: сравнение между часами

    В рабочей книге откройте Excel Macro, чтобы обновить все листы соединений данных и сводные таблицы, а затем экспортировать опорную точку в csv

    Давайте будем гением компьютера.