Another approach is to keep track of the count as you manipulate the dictionary. This can be preferable in situations where the dictionary is continually being modified, and you regularly need an update summary result without having to loop all values each time.
Make a subclass of dictionary, with the following methods:
property true_count as integer
sub Value(key as Variant, _value as Variant)
//assumes _value will only ever be a boolean; extra checks may be
//needed if this is not the case
if me.hasKey(key) then
if me.value(key)<>_value then
if _value then
true_count=true_count+1
else
true_count=true_count-1
end if
end if
elseif _value then
true_count=true_count+1
end if
super.value(key)=_value
end sub
function all_items_are_true() as boolean
return count=true_count
end function
function all_items_are_false() as boolean
return true_count=0
end function