ник: Анатолий (Киев)
Замечание...
У вас возможна ситуация, когда flag_5.Value = True, flag_6.Value = False, flag_1.Value = True?
В этом случае вы получите смесь из двух критериев без оператора And.
И наоборот, если flag_5.Value = False и flag_1.Value = False - вы получите критерий, начинающийся с And.
Я бы во всех вариантах в начале указывал And, а в собранной строке отбросил бы первый-лишний. Так - надежнее.