Preencher Combobox ...
 
Notifications
Clear all

Preencher Combobox com nomes de abas se na celula x tiver y

3 Posts
1 Usuários
0 Reactions
793 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

ola

Tenho uma macro que preenche as combobox com os nomes das planilhas.
Assim vai bem,

        For Each Sheetos In Worksheets
          .AddItem Sheetos.Name
        Next

mas tem abas auxiliares e as de importação

Então para preencher o combobox apenas com o nomes das abas que tem o valor especifico na célula P12,
fiz assim...

        For Each Sheetos In Worksheets
        If FiltrarSemSetores = 1 Then
          If Worksheets(Sheetos.Name).Range("P12").Value2 = "Nome setor" Then .AddItem Sheetos.Name
          Else
          .AddItem Sheetos.Name
           End If
        Next

tentei outras variantes, mas não foi.
Talvez por estar tentando fazer referencia para uma planilha dentro de um laço que varre as planilhas.

Pensei em algumas alternativas...
Mas vai que pode ser mais fácil do que um loop para guardar os nomes das planilha num array, e outro para verificar e carregar o combobox.

Att.

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 17/08/2014 9:43 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Desculpe
o problema principal era células mescladas em uma das abas de apresentação.
infelizmente o excel trata células mescladas 1 como todas, e não todas como 1.
isso exclui a existência das células que não seja a principal
coloquei um
On Error Resume Next

agora tenho que arrumar um jeito de que quando der erro não inclua o item na lista

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 17/08/2014 12:21 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

De algum modo acabei conseguindo
On Error Resume Next joga para a próxima linha
e depois do "Then" é considerada próxima linha sendo verdadeiro ou falso

Sub ComboBoxPLanilha(NomeCombobox As String, Optional FiltrarSemSetores As Byte)

    With Me.Controls(NomeCombobox)
        On Error Resume Next
        Do While .ListCount > 0: .RemoveItem (0): Loop    'limpa Combobox

        For Each sheetos In Worksheets
            aa = sheetos.Name
            If FiltrarSemSetores = 1 Then
                N = 1
                If Worksheets(aa).Range("P12") <> "Nome setor" Then N = 0
                If N = 1 Then .AddItem aa
            Else
                .AddItem aa
            End If
        Next
    End With
End Sub

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 17/08/2014 12:48 pm