Использование флажка в ячейке для отключения звукового сигнала при значении> 999

#excel #vba

#excel #vba

Вопрос:

У меня есть функция для подачи звукового сигнала всякий раз, когда значение ячейки превышает 1999, также есть ячейка «Счетчик» для подсчета количества значений, превышающих 1999. Функция работает должным образом, однако теперь мне нужно установить флажок, если флажок установлен, звук должен быть отключен, но счетчик должен продолжать считать, а когда флажок не установлен, он должен продолжать издавать звуковой сигнал. Вот мой код. Я вызываю эту функцию из ячейки.

 Function TargetCounter2KAC(RngMeasure As Range)        
    If RngMeasure.Value > 1999 Then
        If BlnAboveHundred2K = False Then
            IntCounter2K = IntCounter2K   1
            Call PlaySound("c:windowsmediaAlert4Target2Filled.wav", _
              0, SND_ASYNC Or SND_FILENAME)
            
            BlnAboveHundred2K = True
        Else
            BlnAboveHundred2K = True            
        End If
    Else
        BlnAboveHundred2K = False
    End If

    TargetCounter2KAC = IntCounter2K
End Function
  

Комментарии:

1. Вам нужен настоящий флажок или просто крестик в пустой ячейке листа?

2. Это не форма, я использую обычный лист Excel

3. Я знаю.. Но вам нужен реальный флажок или значение ячейки?

4. @Andreas Настоящий флажок, кстати, что такое X в пустой ячейке, я добавил флажок на вкладках разработчика на листе

5. Это происходит, когда вы нажимаете на пустую ячейку на листе и нажимаете кнопку на клавиатуре, помеченную символом «X»

Ответ №1:

Добавьте флажок Active-X на свой лист:

введите описание изображения здесь

Вы можете использовать свойства, чтобы изменить имя, если хотите.

В вашем коде измените его на:

 Function TargetCounter2KAC(RngMeasure As Range)
    
    If RngMeasure.Value > 1999 Then
        If BlnAboveHundred2K = False Then
            IntCounter2K = IntCounter2K   1

            ' here is the change:
            if Sheets("Sheet1").checkbox1.Value = false then Call PlaySound("c:windowsmediaAlert4Target2Filled.wav", 0, SND_ASYNC Or SND_FILENAME)

            ' or if you want a X in an empty cell method:
            'if Sheets("Sheet1").Range("A1").Value = "" then Call PlaySound("c:windowsmediaAlert4Target2Filled.wav", 0, SND_ASYNC Or SND_FILENAME)
            ' if A1 is the cell to toggle on/off


            BlnAboveHundred2K = True
            
            Else
            
            BlnAboveHundred2K = True
                        
        End If
        
    Else
    
        BlnAboveHundred2K = False
        
    End If

    TargetCounter2KAC = IntCounter2K
    
End Function
  

Комментарии:

1. позвольте мне проверить, и я вернусь с отзывом

2. Если здесь на один конец меньше, куда бы вы это поместили?

3. if Sheets("Sheet1").checkbox1.Value = false then Call PlaySound("c:windowsmediaAlert4Target2Filled.wav", 0, SND_ASYNC Or SND_FILENAME) является встроенным, если для этого не требуется end if .

4. @MohammadHaneefAhmad Как говорит Винсент. Вам не нужно end if , если вы помещаете if и command в одну строку.

5. я разделил строки сразу после ЭТОГО, чтобы увидеть весь код без прокрутки, поэтому, если мне нужно его вывести, где я должен это сделать. сразу после ЭТОГО