Подскажите пользователю, когда ячейка меняется - PullRequest
0 голосов
/ 06 января 2009

Я очень новичок в создании макросов и программировании в целом. У меня есть лист из 38 вкладок. 31 вкладка для дней месяца. Я хотел бы создать макрос, который будет предлагать пользователям предупреждающее сообщение каждый раз, когда в столбце N для каждой из этих 31 вкладок выбрано «MCO». Это возможно?

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 января 2009

Это возможно, используя событие SheetSelectionChange уровня рабочей книги. В модуле ThisWorkbook вашего проекта VBA вставьте следующий код:

Option Compare Text
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim SelectedCellsInColN As Range
    ' Make a range of the cells in Target range that intersect with the cells in the N   column
    Set SelectedCellsInColN = Intersect(Target, Target.Parent.Range("N1:N" & CStr(Target.Parent.Rows.Count)))

    If Not SelectedCellsInColN Is Nothing Then
        ' The user has selected a cell in column N
        Dim CurrCell As Range
        For Each CurrCell In SelectedCellsInColN
            ' If the cell's value contains mco (in any case) then prompt the user with a messagebox
            If CurrCell.Value Like "*MCO*" Then
                MsgBox "You've selected MCO"
                ' Exit the sub so we don't keep bugging the user about it...
                Exit Sub
            End If
        Next CurrCell
    End If
End Sub

По сути, код выполняет поиск целевого диапазона, чтобы увидеть, выбраны ли какие-либо ячейки в столбце N, а затем просматривает любую из этих ячеек в столбце N, чтобы определить, содержит ли их значение MCO (вы можете избавьтесь от звездочек, если вы хотите получить подсказку, только если ячейка содержит только «MCO»), и, если это так, подсказывает пользователю и завершает работу.

Надеюсь, это поможет.

-Jon

0 голосов
/ 13 января 2009

Вы ищете решение для макроса или решение vba. Два разные. Для макроса выполните шаги с использованием макрокодера, для решения VBA начните с ответа Джона

...