2016-03-17 3 views
1

У меня есть лист Excel, с колонкой A, B, C, D.Msgbox с двумя разными критериями

Оба C & Число D изменяется постоянно (они имеют разные критерии), так как он вычисляет данные запаса, которые извлекаются в режиме реального времени.

Мне нужно окно с сообщением для всплывающего окна, когда C & D соответствует моему целевому значению и показывает тикер в столбце A, имя в столбце B и номер в C/D.

С помощью я знаю код, когда есть только колонка C:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.column = 3 And Target.value >= -4 And Target.value <= 4 Then 
    Call MsgBoxMacro(Target.value, Target.column, Target.row) 
    End If 
End Sub 

Sub MsgBoxMacro(value, column, row) 
    MsgBox "Ticker: " & Cells(row, column - 2) & vbNewLine & "Stock Name: " & Cells(row, column - 1) & vbNewLine & "Variable Value: " & value 
End Sub 

Я не знаю, что делать, когда я хочу добавить данные столбца D в код. (так что я могу открыть окно сообщения, когда число D достигнет критериев), пожалуйста, помогите.

Спасибо!

ответ

0

Пропустив другой параметр функции MsgBoxMacro будет решить вашу проблему:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.column = 32 And Target.value >= -4 And Target.value <= 4 Then 
    Call MsgBoxMacro(Target.value, Target.column, Target.row, 0) 
    End If 
    If Target.column = 33 And Target.value >= -4 And Target.value <= 4 Then 
    Call MsgBoxMacro(Target.value, Target.column, Target.row, 1) 
    End If 
End Sub 

Sub MsgBoxMacro(value, column, row, counter) 
    MsgBox "Ticker: " & Cells(row, column - 31 - counter) & vbNewLine & "Stock Name: " & Cells(row, column - 30 - counter) & vbNewLine & "Variable Value: " & value 
End Sub 

Надеется, что это помогает.

+0

Благодарим за помощь! Он работает, за исключением того, что для столбца AF [32] и столбца AG [33] мне нужно, чтобы он отображался по-разному для имени переменной, потому что column32 и 33 имеют собственный заголовок (имя переменной). Пожалуйста, помогите, извините, я не сделал свой вопрос ясным. –

+0

Вы хотите сказать, что имя колонки AF и колонки AG должно быть отображено? – Mrig

+0

да, мне нужно имя колонки AF & AG, которое будет показано вам! –

0

Что-то вроде этого, недалеко от того, что у вас было. Это будет отображаться на листе, где должны быть сделаны изменения.

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Column = 4 Then 
    If ((Target.Offset(0, -1).Value > -4 And Target.Offset(0, -1).Value < 4) And _ 
         (Target.Value > -4 And Target.Value < 4)) Then 
     ' Msgbox here 
    Else 

    End If 

End If 
End Sub 
+0

Благодарим за помощь. Таким образом, измените код, который вы написали, в Private Sub wWorksheet_change (ByVal Target As Range). Однако, как насчет кода Sub MsgBoxMacro? потому что на основе того, что у меня есть сейчас, C будет иметь MsgBox «Тикер:» & Cells (строка, столбец-2) и vbNewLine & «Stock Name:» & Cells (строка, столбец-1). Но D потребуется MsgBox «Ticker:» & Cells (строка, столбец-3) и vbNewLine & «Stock Name:» & Cells (строка, столбец-2) ... где я могу разместить код? Спасибо! –

+0

Я отредактировал, я прочитал последнюю строку, как только я сделал, извините :) –

+0

Это показывает ошибку, пожалуйста, помогите мне. мне нужно удалить мой дополнительный модуль? У меня проблема с двумя кодами (оба c & D) –

Смежные вопросы