Reveja a estrutura da sua tabela, ela foge um pouco das boas práticas de design de base de dados. Numa base de dados, cada linha de uma tabela representa normalmente uma informação. Por exemplo, uma tabela de cadastro tem os campos Nome, Data de Nascimento
e Telefone. Desta forma, cada linha representa uma pessoa. No seu caso, cada linha não representa uma unidade de nada. Além disso, não é recomendável deixar muitos espaços em brancos na tabela. Dados em branco podem fazer confusão com o engine que acessa a
base de dados, pois dependendo de algumas situações, podem ser considerados NULL, 0 ou "".
Lembro-me uma vez que você fez a mesma coisa, numa tabela com cidades de estados do Brasil, em que cada coluna representava um estado.
Minha sugestão seria você criar uma tabela com três campos: ProdutoID, NomeProduto, TipoProduto, em que este terceiro campo pode assumir os valores "Salgado", "Bebida" ou "Sorvete".
De qualquer forma, se não quiser alterar a estrutura de sua tabela e continuar utilizando desta forma, tire a cláusula IS NOT NULL da instrução SQL e use o código abaixo:
While Not banco.EOF
If Not IsNull(banco.Fields(Opcao)) Then
nProduto = banco.Fields(Opcao)
End If
banco.MoveNext
Felipe Costa Gualberto - http://www.ambienteoffice.com.br