#vba #if-statement
#vba #if-оператор
Вопрос:
Я здесь перед дилеммой, в которой, кажется, просто не могу разобраться. Вы, профессиональные пользователи vba, могли бы помочь.
По сути, я пытаюсь показать, что бутылки с готовой продукцией — сырые бутылки — имеют свои пределы. как показано ниже. Если в общей сложности более 208 бутылок сырья, использованных для готовой продукции, то сообщение об отказе, если меньше, то продолжайте. Но в то же время, если на 50 бутылок меньше сырых бутылок, чтобы сделать готовую продукцию, тогда сообщение об отказе.
Итак, если готовая продукция = 4000 необработанных бутылок = 4212
В сообщении будет отображаться сообщение 212 bottles no go
Если готовая продукция = 4000 необработанных бутылок = 3949
сообщение должно показывать сообщение 51 бутылка не идет
If Abs(.Cells(21, 3)) < 208 Or Abs(.Cells(21, 3)) < -50 Then
'# Display "go" message
.Cells(7, 5) = "All good, you may proceed to enter figures in EZY."
Else
'# Display "no-go" message
.Cells(7, 5) = "there is " amp; .Cells(21, 3) amp; " bottles less from Depal, do not enter in EZY!"
End If 'Check
Я надеюсь, что в этом есть смысл. Могу ли я вложить значения больше и меньше или мне ввести под ними другой код?
Если я удалю ‘Или Abs(.Cells(21, 3)) < -50’, весь код будет работать, но только для верхнего предела.
Комментарии:
1. Каким способом вы рассчитали разницу? Это
Finished - Raw
илиRaw - Finished
?2. это Необработанный продукт
Ответ №1:
Если вы вычислите к Raw - Finished
тому времени, это должно быть
If .Cells(21, 3) > 208 Or .Cells(21, 3) < -50 Then
В противном случае, если вы вычислите к Finished - Raw
тому времени, это должно быть
If .Cells(21, 3) < -208 Or .Cells(21, 3) > 50 Then
Используя Abs
, вы удаляете возможность определять, находится ли значение ниже или выше «4000».
Комментарии:
1. Привет, извините, потребовалось некоторое время, чтобы вернуться, попробовал это и все тот же результат. либо 208 и выше будут показывать ошибку, но не ниже 50. и наоборот, ниже 50 будет отображаться, но не выше 208.
2. Хм, это работает для меня. В чем заключается формула
.Cells(21,3)
? Я также предполагаю , что вы используете оператор With с момента своего.Cells
создания . Также попробуйте вставить212
then-51
.Cells(21,3)
и убедитесь, что это работает. Я подозреваю, что это как-то связано с вашей формулой в этой ячейке или с чем-то, что исходит из нее.3. .Ячейки (21, 3) = .Ячейки (9, 3) — .Ячейки (11, 3), которые являются законченными — необработанными
4. Так
.Cells(21,3)
вычисляется в VBA? Иначе у него нет формулы в ячейке? Также вы пробовали метод, который я предложил выше? Обе мои формулы в моем ответе работают в любом случае, они рассчитываются так, как я их тестировал, поэтому что-то не так с вашей ячейкой или формулами / форматированием, которые вы используете. Так что проверьте себя, просто поместив значение в эту ячейку или попробуйте его на новом листе и посмотрите, работает ли это. КромеWith
того, что вы используете? Вы также можете попробовать поместить a.Value
в конце.Cells()
5. Попытается найти ошибки. Это огромная рабочая книга со многими рабочими листами, поэтому With — Op1. Установите Op1 = Worksheet blabla, чтобы его с Op1 .cells…
Ответ №2:
В конце концов это сработало. Спасибо!
'# If D - F - Wastes is within /- 50...
If .Cells(21, 3) < 208 And .Cells(21, 3) > -50 Then
'# Display "go" message
.Cells(7, 5) = "All good, you may proceed to enter figures in EZY."
Else
'# Display "no-go" message
.Cells(7, 5) = "there is " amp; .Cells(21, 3) amp; " bottles less from Depal, do not enter in EZY!"
End If 'Check