Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Оператор Beep (одиночный звуковой сигнал)

    Генерация одиночного звукового сигнала в VBA с помощью оператора Beep. Оповещающий гудок при выборе определенных ячеек на рабочем листе Excel. Примеры.

    Оператор Beep в VBA Excel

    Оператор Beep предназначен для генерации одиночного звукового сигнала из кода VBA. Его частота и длительность зависят от аппаратного и системного программного обеспечения и различаются между отдельными компьютерами.

    Источником звука может быть как системный динамик, непосредственно подключенный к материнской плате («Beeper», «Speaker»), так и внешняя акустическая система, подключенная к линейному выходу компьютера (возможно, так система предупреждает, что «Beeper» отсутствует).

    Генерация одиночного сигнала

    Пример 1
    Вызвать одиночный сигнал из кода VBA Excel очень просто:

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

    Звуковой сигнал при выборе ячейки

    Если вы уже проверили работоспособность оператора Beep на вашем компьютере, попробуйте использовать воспроизведение сигнала при выборе определенных ячеек на рабочем листе Excel.

    Пример 2
    Следующий код размещается в модуле листа и генерирует звуковой сигнал при выборе ячейки "C3":

    Target — это переменная диапазона (As Range), которой присваивается выбранная на рабочем листе ячейка. И если будет выбрана ячейка с адресом "C3", прозвучит гудок.

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

    Выбрав любую ячейку из диапазона "B2:D4,E6,F1:I8", вы услышите гудок. Конструкция Not Intersect(Target, Range("B2:D4,E6,F1:I8")) Is Nothing используется для определения, когда переменная Target пересекается с заданным диапазоном. Здесь используется двойное отрицание, которое дает в итоге плюс: «не не пересекается» = «пересекается».

    Если в приведенной выше конструкции двойного отрицания убрать оператор Not, звуковой сигнал будет генерироваться при выборе любой ячейки, не входящей в указанный диапазон ("B2:D4,E6,F1:I8").

    Несколько сигналов подряд

    Возможность генерации из кода VBA Excel нескольких сигналов подряд с помощью оператора Beep очевидно зависит также как частота и длительность сигнала от аппаратного и системного программного обеспечения конкретного компьютера.

    Пример 4
    В этом примере кода с сайта docs.microsoft.com должны звучать три последовательных гудка Beep:

    На моем компьютере при выполнении этого кода звучит только один сигнал. Возможно, три последовательных гудка способен издать только системный динамик («Beeper», «Speaker»), который у меня отсутствует. А сигнал через внешнюю акустическую систему, возможно, просто является предупреждением, что «Speaker» не подключен.

    Пример 5
    Заставить сигнал прозвучать трижды на моем компьютере удается только при пошаговом выполнении цикла из редактора VBA или вставки паузы с помощью информационного окна MsgBox:

    Чтобы сгенерировать из кода VBA Excel звуковой сигнал заданной частоты и длительности и даже сыграть несложную мелодию, используйте функцию Beep из набора базовых функций Windows API.

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.