2015-04-22 3 views
1

Я пытаюсь получить соответствующую ячейку, которая будет введена в msgBox, когда ячейка в этой строке попадает в определенное значение. Например, если C1> 3.45, я хочу, чтобы в окне сообщения говорилось: «Значение в« + Range («A1») + «слишком велико». Это будет распространяться на весь массив.Как ссылаться на ячейку в msgBox, когда другое поле имеет определенное значение в excel (VBA).

Я пытаюсь изменить простой скрипт.

Private Sub Worksheet_Change(ByVal Target As Range) 
    Set Target = Me.Range("C1:C100") 
    If Target.Value > 3.45 Then 
     MsgBox "The Value at "+ Range("A1:A100") + " exceeded limit." 
    End If 
End Sub 

Я знаю, что чего-то не хватает, но я не могу понять, как соотнести цифры и вернуть их. Я знаю, что я мог бы с Матчем и используя общую форму

Set targetRange = [range] 
targetRange.FormulaArray = "=[insert array formula]" 

Но я не могу показаться, чтобы заставить их работать правильно.

Заранее благодарю за помощь.

+0

Мне кажется, что то, что вы хотите сделать, это цикл через все клетки в пределах диапазона и всплывал 'MsgBox 'если одно из этих чисел превышает пороговое значение? –

+0

Это было бы правильно. –

+0

Если он будет продолжаться через ячейки один раз, если будет найден порог, это также будет предпочтительным. Я бы не хотел, чтобы он остановился, если бы нашел его. –

ответ

1

Почему бы не попробовать что-то вроде

for i = 1 to 100 
    if cells(i, 3) > 3.45 then 
    msgbox "Cell C" & i & " is too high. The corresponding time stamp is " & cells(i, 1) & "." 
    end if 
next i 

это будет предупреждать пользователя каждый раз, когда клетка в этом диапазоне было «слишком высоко».

+0

Я попробую это, но не могли бы вы объяснить что-то, чтобы у меня было более глубокое понимание, а не просто копирование/вставка. Когда вы используете ячейки (i, 3), автоматически ли это происходит? По существу, используя i в качестве места-хранителя? (извините, если это глупый вопрос, я не работал с VBA ужасно долгое время) –

+0

Он будет «цитировать» через ячейки C1-C100. C - это третий столбец, следовательно, 3. i относится к номерам строк от 1 до 100. Не глупый вопрос. Продолжай учиться! –

+0

Кроме того, гораздо сложнее ссылаться на отдельную ячейку? Причина, по которой я не хочу конкретно ссылаться на ячейки, заключается в том, что ячейка классифицируется по дате/времени, которая находится в столбце A, а сами данные находятся в столбце C. Возможность увидеть временную метку изначально избавляется от большего количества поиск. –

0

одного вкладыша без петель (для удовольствия - потрогать труднее понять)

MsgBox Join(Filter(Application.Transpose(Application.Evaluate("=IF(ISNUMBER(C1:C100),IF(C1:C100>3.45,""C""& ROW(C1:C100),""x""),""x"")")), "x", False), ",") 
Смежные вопросы