Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por oribesjr
#31319
Boa tarde. Não manjo de programação no excel, mas diante da necessidade de criar um menu suspenso, encontrei o seguinte código para a minha demanda:

Sub Menu_Lista()
Application.CommandBars(“Workbook tabs”).ShowPopup
End Sub

Minha dúvida: Com este código consigo um menu suspenso que aparece e me permite a navegação por todas as planilhas em uma unica pasta de trabalho, contudo necessito delimitar quais planilhas quero que apareçam no Menu. O que altero neste código para conseguir isto?

Fico no aguardo. Obrigado!
Avatar do usuário
Por Basole
Posts Avatar
#31322
Para não aparecer o nome na lista, você deve ocultar a planilha.

Exemplo:
Código: Selecionar todos
Sub Listar_Abas()
    
    With ThisWorkbook
        If .Sheets.Count <= 10 Then
            .Sheets("Plan3").Visible = False
            Application.CommandBars("Workbook Tabs").ShowPopup 500, 225
            .Sheets("Plan3").Visible = True
        End If
    End With
End Sub
Por oribesjr
#31392
Olá Basole. Quase deu certo. O problema é que a função é para ser usada em um menu com várias opções, ou seja, tenho um menu com por exemplo Planilhas 1 - Planilhas 2 - Planilhas 3. Cada item desses, tem por exemplos 4 opções. A sua fórmula, oculta por exemplo os itens da Planilhas 2 e Planilhas 3. Ok enquanto eu utilizar apenas o Planilhas 1. Mas ao tentar acessar os itens da Planilhas 2 ou Planilhas 3, dá erro na fórmula, pois os itens desses estão ocultos. Aguardo uma ajuda sua com a fórmula. De qualquer maneira agradeço já por tentar me ajudar. Grato!
Avatar do usuário
Por Basole
Posts Avatar
#31398
Não entendi direito o seu enunciado.

Se puder anexar o seu arquivo, para tentar entender melhor o que precisa.
Por oribesjr
#31400
Segue em anexo Basole.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Basole
Posts Avatar
#31402
Eu não entendi as combinações das planilhas (abas) que quer que fique visível e que apareça ou não no menu, mas tem que ter em mente que no Excel, pelo menos uma aba tem que ficar visível sendo assim, se for ocultar a aba A e C por exemplo, pelo menos a B tem que ficar visível.

Tem que seguir esta linha para criar as combinações.
Por oribesjr
#31404
Então Basole, é um menu como o de um site. Eu não quero que desapareça nada. É que segundo sua fórmula, teria de ocultar algumas planilhas para dar certo. Eu quero simplesmente navegar entre as planilhas. Só que no Botão Formulário 1, eu quero que apareça apenas as opções Fornecedor 1 - Subcontrato A, Fornecedor 1 - Subcontrato B e Fornecedor 1 - Subcontrato C;
No Botão Formulário 2 que apareça Fornecedor 2 - Subcontrato A, Fornecedor 2 - Subcontrato B e Fornecedor 2 - Subcontrato C e assim, a mesma ideia para o botão Formulário 3. Quero apenas navegar entre as planilhas, como um menu de um site. Apenas isto.
Avatar do usuário
Por Basole
Posts Avatar
#31428
Segue em anexo seu arquivo com as alterações.

Vejas se é isso que desejas
Você não está autorizado a ver ou baixar esse anexo.
Por oribesjr
#31438
Então Basole. Você entendeu certinho o que eu queria. Mas tente navegar pelas planilhas clicando nos links dos menus suspensos. Veja se os links que você clica, abrem as planilhas corretas. Pelo menos para mim, não abrem as planilhas corretas. Obrigado mais uma vez por tentar me ajudar.
Por oribesjr
#31440
Resolvi. Eureka! Assim deu certo :

Sub Fornecedor1()

With ThisWorkbook
' Botão Formulário 1, eu quero que apareça apenas as opções Fornecedor 1 - Subcontrato A, Fornecedor 1 - Subcontrato B e
' Fornecedor 1 - Subcontrato C
' Mostra:
.Sheets("Fornecedor 1 - Subcontrato A").Visible = True
.Sheets("Fornecedor 1 - Subcontrato B").Visible = True
.Sheets("Fornecedor 1 - Subcontrato C").Visible = True
' Oculta:
.Sheets("Fornecedor 2 - Subcontrato A").Visible = False
.Sheets("Fornecedor 2 - Subcontrato B").Visible = False
.Sheets("Fornecedor 2 - Subcontrato C").Visible = False
.Sheets("Fornecedor 3 - Subcontrato A").Visible = False
.Sheets("Fornecedor 3 - Subcontrato B").Visible = False
.Sheets("Fornecedor 3 - Subcontrato C").Visible = False
.Application.CommandBars("Workbook Tabs").ShowPopup
.Sheets("Fornecedor 2 - Subcontrato A").Visible = False
.Sheets("Fornecedor 2 - Subcontrato B").Visible = False
.Sheets("Fornecedor 2 - Subcontrato C").Visible = False
.Sheets("Fornecedor 3 - Subcontrato A").Visible = False
.Sheets("Fornecedor 3 - Subcontrato B").Visible = False
.Sheets("Fornecedor 3 - Subcontrato C").Visible = False

End With
End Sub
Por oribesjr
#31441
Agora outra dúvida para finalizar. Ao invés de eu precisar clicar no botão Fornecedor 1 para aparecer o menu suspenso por exemplo, tem como apenas passar o mouse por cima e já aparecer o menu suspenso?
Avatar do usuário
Por Basole
Posts Avatar
#31456
oribesjr escreveu:Resolvi. Eureka! Assim deu certo :
Sub Fornecedor1()
With ThisWorkbook
' Botão Formulário 1, eu quero que apareça apenas as opções Fornecedor 1 - Subcontrato A, Fornecedor 1 - Subcontrato B e
' Fornecedor 1 - Subcontrato C
' Mostra:
.Sheets("Fornecedor 1 - Subcontrato A").Visible = True
.Sheets("Fornecedor 1 - Subcontrato B").Visible = True
.Sheets("Fornecedor 1 - Subcontrato C").Visible = True
' Oculta:
.Sheets("Fornecedor 2 - Subcontrato A").Visible = False
.Sheets("Fornecedor 2 - Subcontrato B").Visible = False
.Sheets("Fornecedor 2 - Subcontrato C").Visible = False
.Sheets("Fornecedor 3 - Subcontrato A").Visible = False
.Sheets("Fornecedor 3 - Subcontrato B").Visible = False
.Sheets("Fornecedor 3 - Subcontrato C").Visible = False
.Application.CommandBars("Workbook Tabs").ShowPopup
.Sheets("Fornecedor 2 - Subcontrato A").Visible = False
.Sheets("Fornecedor 2 - Subcontrato B").Visible = False
.Sheets("Fornecedor 2 - Subcontrato C").Visible = False
.Sheets("Fornecedor 3 - Subcontrato A").Visible = False
.Sheets("Fornecedor 3 - Subcontrato B").Visible = False
.Sheets("Fornecedor 3 - Subcontrato C").Visible = False
End With
End Sub
:?: Não entendi que alteração voce fez, pois ficou exatamente como no exemplo da minha postagem anterior.

Quanto a outra sua dúivida.
A CaixaDeTexto não tem o evento moveMouse, então tive que inseri um Rotulo (label active-x) transparente, para acionar a macro ao posicionar o cursor do mouse. Para o 1º fornecedor, foi bem mas a partir do 2º ao posicionar o cursor, o 1º item da lista do menu é selecionado automaticamente. Se fosse para executar a macro acho que até iria bem, mas como são duas ações, abrir o menu e selecionar, não ficou de acordo como esperado.

Veja se esta outra opção com aba customizada na fixa de opções lhe atende. Neste caso também não tem o evento mouse, tem que clicar para aparecer o menu. A vantagem é que não precisa colocar os botões de fornecedores em todas as abas, como esta no seu modelo.

Imagem
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord