#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. я разделил строки сразу после ЭТОГО, чтобы увидеть весь код без прокрутки, поэтому, если мне нужно его вывести, где я должен это сделать. сразу после ЭТОГО