Как вложить меньше и больше в один код

#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