none
Desabilitar Vários objetos do Formulario RRS feed

  • Pergunta

  • Olá.

    Trabalho com controle patrimonial e montei, no vba, um formulário com dois listbox, dois botões e uma multipage, onde cada uma dessas abas tem a planta baixa de cada setor (num total de 80 setores).

    Nessas plantas contêm os patrimônios presente no setor e em cada patrimônio associei um label (num total de 6.000 patrimônios).

    O procedimento é o seguinte: Quando seleciono o setor (listbox1), aparece a aba correspondente do setor com a respectiva planta baixa e a listbox2 mostra os bens daquele setor. O listbox2 é MultiSelect = 1 e ListStyle = 1. Quando seleciono o(s) número(s) de patrimônio(s) e clico no Button1, o(s) label(s) associados fica(m) visível(is). O Button2 é para colocar todos os label's invisíveis (visible = false).

    A ajuda que peço é:

    Uns dos comando do Button1 é o seguinte:

    .....

        If Cells(row, col) = Label_1.Caption Then
            Label_1.Visible = True
        ElseIf Cells(row, col) <> Label_1.Caption Then
            Label_1.Visible = False
        End If

    .

    .

    .

        If Cells(row, col) = Label_6.000.Caption Then
            Label_6.000.Visible = True
        ElseIf Cells(row, col) <> Label_6.000.Caption Then
            Label_6.000.Visible = False
        End If

    .....

    O problema é que eu inseri 6.000 label's e quando eu clico no Button1 aparece a seguinte mensagem:

    Erro de compilação:

    Número excessivo de variáveis locais, não-fixas.

    Há uma possibilidade de inserir uma variável para a label e fazer um incremento para habilitar/desabitar apenas as label's de interesse?

    Obrigado.

    segunda-feira, 3 de outubro de 2016 02:10

Respostas

  • Tá, primeiro que você está com o post no tópico errado, isso é VBA e você colocou esse post em "ASP.net". Por isso deve demorar mais para alguém te responder ...

    Segundo que cada linha dessa pode ser simplificada (apenas uma dica):

    Label_1.Visible = (Cells(row, col) = Label_1.Caption)

    Terceiro, o problema não está no fato de você ter que criar variáveis para as labels, pelo código que você copiou, visto que não há uso de variáveis nessas linhas de código (além da Label em si, que é uma classe logo uma variável).

    O problema deve ser no número excessivo de labels que você tem, ou outra variável que você esteja usando no seu código e não está postada aqui. De qualquer forma, o VBA (Excel provavelmente) não foi feito para comportar números grandes de variáveis visto que ele considera os códigos como "Macros", e limita o seu uso de memória e processamento para não travar o sistema.

    Note que existem limites no VBA tanto de tamanho (se não me engano era algo em torno de 64KB de variáveis não estáticas) e de elementos declarados em um processamento.

    terça-feira, 4 de outubro de 2016 12:43