Socorro com Multipa...
 
Notifications
Clear all

Socorro com Multipaginas

15 Posts
3 Usuários
0 Reactions
3,504 Visualizações
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Boa noite amigos,

O meu projeto ja esta rodando com um formulario menu que por seus botoes chamam os respectivos formularios, mas agora gostaria de ir alem.
Montei a userform1 como eu gostaria que ele se apresentasse, mas nao sei adicionar codigos para paginas diferentes, ja que toda vez que clico em uma pagina diferente, continua sendo sempre o mesmo formulario, entao nao entendi como se faz para adicionar codigos para cada pagina individualmente.

Socorro!!! E perdoem a ignorancia.

Fabio Pradella

 
Postado : 08/03/2012 5:25 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

se me permite fazer uma pergunta, você quer que neste formulário, em cada pagina, tenha a ação que precisa?

Exemplo: Na página Cadastro de Clientes, quer por oque tem nela para funcionar? Novo registro, Alterar registro etc?

Na outra página também?

At

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/03/2012 6:36 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Bom dia Alexandre,
Isto mesmo, gostaria que todas as paginas do formulario userform1 funcionassem, a minha grande dificuldade esta em exemplo: incluir o codigo para que cada listview funcione( carregue os dados dos respectivos bancos de dados ), aonde coloco estes codigos visto que o formulario me permite incluir a funçao preenchelistbox somente uma unica vez?

Entendam por favor que provavelmente isto pode ser feito, sou eu que nao sei como, hehehehe.

Obrigado

 
Postado : 09/03/2012 7:56 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Esse conteúdo ajuda a clarear sua cabeça

São 8 lições
http://www.ozgrid.com/Excel/free-traini ... esson9.htm

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/03/2012 8:17 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Ja vou dar uma olhada, obrigado por enquanto.

 
Postado : 09/03/2012 8:19 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Existem cinco métodos que podemos utilizar para aceder a uma página individual de um MultiPage:

Indice Numerico;
Método item;
Nome da Página;
Objeto página;
SelectedItem.

Ex: MultiPage1.Pages MsgBox (0). Caption

Ok, mas esta linha eu coloco aonde, em cada funçao?

Ex: Private Sub PopulaListBox()
MultiPage1.Pages MsgBox (0). Caption

Obrigado

 
Postado : 09/03/2012 9:31 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio, não sei se está correta minha interpretação, mas pelo que entendi você quer carregar as PAGES do MultiPge1 com Dados provenientes de BD diferentes, se for isto, você tem de entender primeiro que ao chamar o Form o mesmo é carregado com os dados que da Aba que você definiu na rotina "PreecheRecordSet" na instrução sql :
sql = "SELECT * FROM [BDClientes$]", ou seja, aqui estamos lidando somente com os Dados desta Aba, se quisermos utilizar outra Aba, devemos ou criar variáveis onde alteramos o BD, e utilizarmos no Evento Click do MultiPage para capturarmos qual Page selecionamos e então direcionarmos para o BD que querremos, então ou criamos as Variaveis ou criamos outra rotina igual a "PreecheRecordSet" com nome diferente é logico e setamos o BD que queremos.

Aqui, a Page selecionada é capturado o Nome da Page

Private Sub MultiPage1_Click(ByVal Index As Long)

    'Nestas instruções utilizamos pelos Nomes das Pages
    Select Case MultiPage1.SelectedItem.Caption
        Case "Page6"
            'Aqui vai a ação que queremos para esta Page
            MsgBox "page Selecionada :- " & MultiPage1.SelectedItem.Caption
        
        Case "Cadastro de Clientes"
            'Aqui vai a ação que queremos para esta Page
            MsgBox "page Selecionada :- " & MultiPage1.SelectedItem.Caption
    
        Case "Corridas Convenio"
            'Aqui vai a ação que queremos para esta Page
            MsgBox "page Selecionada :- " & MultiPage1.SelectedItem.Caption
            
    End Select

End Sub

Aqui, a Page selecionada é capturado o INDEX da Page:

Private Sub MultiPage1_Click(ByVal Index As Long)

    'Nestas instruções utilizamos o Index das Pages
    Select Case MultiPage1.Value
        Case 0
            'Aqui vai a ação que queremos para esta Page
            MsgBox "page Selecionada :- " & MultiPage1.SelectedItem.Caption
        
        Case 1
            'Aqui vai a ação que queremos para esta Page
            MsgBox "page Selecionada :- " & MultiPage1.SelectedItem.Caption
    
        Case 2
            'Aqui vai a ação que queremos para esta Page
            MsgBox "page Selecionada :- " & MultiPage1.SelectedItem.Caption
            
    End Select

End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/03/2012 6:34 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Boa noite Mauro,

Sempre voce, hahahahahah, que bom...

(Fabio, não sei se está correta minha interpretação, mas pelo que entendi você quer carregar as PAGES do MultiPge1 com Dados provenientes de BD diferentes)

E exatamente isto, a minha grande dificuldade esta em alimentar cada listview com um BD diferente, mas se e que entendi, criando esta rotina na funçao click do multipage, indico uma sql para cada case?( no caso jogar dentro da case todas as rotinas que carregam o listview)???

Meu muito obrigado mais uma vez Mauro vou tentar fazer o que vc explicou, nao tem sido facil mas tem sido muito prazeroso aprender.

Fabio Pradella

 
Postado : 09/03/2012 7:06 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Mauro,

Nao tenho vergonha em ser sincero, nao consegui entender bem o uso das cases, entao segui a tua outra indicaçao, dei uma boa limpada nos codigos e renomeei as rotinas Populalistbox e preencherecordset para cada page e fiz as devidas indicaçoes. Mas nao contente por nao ter entendido a questao case( achei que era so incluir as duas rotinas "populalistbox e preencherecordset" que estaria tudo pronto, pediria a gentileza se possivel de postar uma pronta, ficaria muito agradecido.

Outra coisa, que passou a acontecer no multipaginas e que toda vez que abro em execuçao as paginas pela primeira vez, aparece somente a listview bem no alto, ai tenho que sair e voltar para que a pagina esteja ok, sabe me dizer o porque?

Ditado que para mim agora tem ainda mais sentindo no mundo do VBA " MORRO E NAO VEJO TUDO".

Um abraço mestre Mauro e a todos que por aqui passam.

 
Postado : 09/03/2012 8:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio, o que exatamente você não entendeu sobre os Cases, as rotinas estão comentadas, uma captura o Nome da Page (SelectedItem.Caption) que você definiu e a outra é o Index da Page (MultiPage1.Value), a numeração das Pages começam em "0".

Se selecionar a primeira Page, o Index é "0", levando para o Case 0, se for pelo Nome(Caption) sua primeira page tem o Nome "Page6", então é direcionado para o Case "Page6", e na sequência deve colocar a Rotina ou a chamada para a macro que quer executar para a Page Selecionada.

Quanto as Rotinas, você já tem elas prontas, a melhor maneira de você adapta-las e entender, seria, fazendo da seguinte forma :

Já temos as instruções que preenche uma Page, vamos chamar de (Page1) baseado em um BD (BD1), então faça uma cópia destas rotinas e salve em arquivo Texto, depois refaça todas as alterações para preencher outra Page (Page2) baseando em outro BD (BD2), como se tivessemos somente este, chegando ao resultado que queremos, teremos as instruções que preenche a Page2, depois é só ajustar os nomes das rotinas para não ficarem iguais e copiarmos do arquivo texto as rotinas que preenchem Page1.

É como se tivessemos dois arquivos diferentes, cada um com uma Page mas baseados em BD diferentes, é só juntar os dois e ajustar os nomes das Macros se forem iguais.

Quanto a questão do ListView, é um pouco dificil dizer, mas se o Listview estiver em uma das Pages, diminua o tamanho do Listview só para teste e execute, verifique se em alguma parte da rotina não tem instrução definindo a posição do Listview, veja se está abrindo na Page correta.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/03/2012 9:10 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Permitam-me...

Já observei esse problema com a utilização do ListView em MultiPage. Tente deixar o ListView limpo ao desativar e ativar a Page, só preencha quando estiver ativa.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/03/2012 9:32 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Boa tarde Senhores,

Mauro, sobre a possiçao do Listview, fiz tudo que vc indicou e nao adiantou, e realmente so acontece com listview que possuo em tres das quatro abas do multipaginas, ja a 4 contem uma combobox e com esta tudo bem.

Jose, nao seria o que ja tenho na rotina iniciar??? Ate porque se nao for, nao sei adicionar os codigos para limpar na entrada e na saida as listviews, hehehe...

Private Sub UserForm_Initialize()

ListView1.ColumnHeaders.Clear
ListView2.ColumnHeaders.Clear 'Clear the Column Headers
ListView3.ColumnHeaders.Clear
ListView1.Listitems.Clear
ListView2.Listitems.Clear
ListView3.Listitems.Clear

Estou anexando o projeto para que vcs deem uma olhada como esta ficando ate porque voces participaram desde o inicio na construçao do mesmo e ate para voces terem uma ideia de como estou me virando com as dicas de voces, foco na userform1 que resume tudo que me serve.
Senhores, sei que as vezes as minhas perguntas podem parecer ate ridiculas para voces, mas como ja me expliquei uma vez com o Mauro, sou iniciante mesmo , e o que tenho aprendido e com muito esforço meu e paciencia dos senhores, sei que o forum nao e uma escola on line, mas acaba que nos tornamos alunos , tenho pesquisado muito na rede, mas nunca tenho tido tanto exeto como as indicaçoes dos senhores, que sempre vao direto ao assunto.

Um abraço aos dois Mestres e a todos que tem me ajudado.

 
Postado : 11/03/2012 12:43 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Colegas, fiquei intrigado com esta situação da posição do ListView, e pesquisando encontrei que se trata de uma incompatibilidade de uso deste controle com MultPages e outros, como podem ver no link abaixo, e se pesquisarem por "Bug Listview", encontrarão alguns assuntos relacionados, como o abaixo de onde o mesmo da a dica de como resolveu :

Excel 2007 - ListView Positioning Problem
http://social.msdn.microsoft.com/Forums ... 28916afeb1

O mesmo diz ter utilizado no Evento Click do MultiPage instruções para Ocultar e Reexibir o ListView, só que em meus testes achei que funcionou melhor se colocarmos no Evento Change, da seguinte forma :

    Private Sub MultiPage1_Change()
        ListView1.Visible = False
        ListView1.Visible = True
        
           ListView2.Visible = False
           ListView2.Visible = True
       
                ListView3.Visible = False
                ListView3.Visible = True
       
    End Sub

Neste mesmo link acima, tambem diz para utilizar os controles separados, deixando somente o listview dentro da Page e os outros cobntroles fora, seria uma outra dica, desta forma, como os CommandButtons estão associados a rotinas diferentes, colocariamos no Evento Click do MultiPage as instruções para Exibir os Botões referentes a Page Ativa e ocultar os outros.

Por hora é o que temos, vamos ficar no aguardo de outras dicas.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/03/2012 8:30 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Boa noite Mauro, aqui funcionou na perfeiçao, quem sabe sabe.

Fecho o topico???

 
Postado : 12/03/2012 8:36 pm
(@deivity)
Posts: 2
New Member
 

Para não ter que fazer um por um tente isto:

Private Sub MultiPage1_Change()
Dim lista As Control

For Each lista In UserForm2.Controls
If Left(TypeName(lista), 4) = "List" Then
UserForm2.Controls.Item(lista.Name).Visible = False
UserForm2.Controls.Item(lista.Name).Visible = True
End If
Next

End Sub

 
Postado : 16/07/2015 2:22 pm