2017-02-14 2 views
-3

Я ищу vba для всплывающего окна MsgBox, когда выбранная ячейка находится в диапазоне, а также соответствует критериям.Excel VBA - Msg Box, если выбранная ячейка находится в диапазоне, а также соответствует критериям

Пример:

Range: (A3:A7) 
Criteria: "YES" 

    |  A   |  B   |  
     -------------------|------------------| 
    1 |  NO   |     | 
    2 |  NO   |     | 
    3 |  YES  |   1  | 
    4 |  YES  |   2  | 
    5 |  NO   |     | 
    6 |  NO   |     | 
    7 |  YES  |   3  | 

Требование: Если я двойной щелчок либо A3, A4 или A7, коробка тзд должен появиться со значением следующего столбца в одной и той же строке.

Пример: Если я выбираю A7, должен появиться MsgBox со значением «3».

Я пробовал пару вещей без успеха.

Заранее благодарим за вашу помощь!

MD

+0

Что вы пробовали? – nightcrawler23

ответ

1

Вы можете начать с этого. Обратите внимание, что этот код входит в рабочий лист и не в отдельный модуль.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    Dim myRange As Range 
    Set myRange = Range("A3:A7") 
    If Not Intersect(Target, myRange) Is Nothing And Target.Rows.Count = 1 And Target.Columns.Count = 1 Then 
     If Target.Value = "YES" Then 
      MsgBox (Target.Offset(0, 1)) 
     End If 
    End If 
End Sub 

также это будет по-прежнему выходить из камеры в режиме редактирования после того, как MsgBox рассматривается, если не справиться с этим в коде также

+0

Вы должны усилить это решение: 1) проверить, что «Целевой» - это диапазон одной ячейки. 2) он содержит «ДА» – user3598756

+0

Извините. пропустил это. пересмотрели код – nightcrawler23

+1

@ user3598756 Кстати, двойной клик всегда будет происходить в одной ячейке. Вы видите какой-либо другой сценарий? – nightcrawler23

0

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

Код

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    If Not Intersect(Target, Range("A3:A" & Cells(Rows.Count, "A").End(xlUp).Row)) Is Nothing Then 
     If Target.Value = "YES" Then 
      MsgBox Target.Offset(0, 1).Value 
     End If 
    End If 
End Sub 
Смежные вопросы