Если честно, не понял
Я не знаю исходной постановки. Одна из подсказок, может и не в тему
при установке значения в range на квере можно использовать перечисление через запятую
while select tmpTable
{
if(strQry)
strQry = strQry +','+queryvalue(tmpTable.A);
else
strQry = queryvalue(tmpTable.A);
}
range.value(strQry);
Может это и избавит от необходимости что-то изобретать ужасное