Modelo Cadastro V3 - Adaptações
Enviado: Sáb Set 25, 2010 12:32 am
Caros colegas, dando contínuidade ao Tópico que iniciei referente as :
Principais Mudanças do ModeloCadastro V3 (viewtopic.php?f=5&t=366),
e vendo a dificuldade daqueles que não teem muita intimidade com VBA ou estão iniciando, resolvi me aprofundar um pouco mais, passando mais algumas noções :
Antes de mais nada, precisamos ter em mente o conceito referente a:
Pasta e Planilha (Workbook, Worksheet), e como é um assunto um pouco complexo e Longo, vocês podem usar a própria Ajuda do VBA para entender um pouco mais ou nos endereços abaixo, aonde tem as definições muito bem explicadas.
1) Lição 04: VBA - Trabalhando com o objeto Application
http://www.juliobattisti.com.br/excel12 ... licao4.htm
2 ) Lição 05: Trabalhando com o Objeto Workbook
http://www.juliobattisti.com.br/excel12 ... licao5.htm
3 ) Lição 06: Trabalhando com o Objeto Worksheet
http://www.juliobattisti.com.br/excel12 ... licao6.htm
Algumas das duvidas e confusões que percebi em alguns Modelos adaptados, é que como no Modelo Cadastro V3 utiliza dois Arquivos, e na Pasta Front_End temos dois Ranges Nomeados referentes ao Caminho e Nome do Arquivo, e esses nomes estão definidos como PASTA_DADOS e ARQUIVO_DADOS, aonde o primeiro, PASTA, não se refere ao nome da pasta em questão e sim o Local, Caminho em que se encontra o ARQUIVO_DADOS(ModeloCadastro_Dados.xls) e o segundo, o Nome do Arquivo.
Ficando essa parte entendida vamos para a rotina :
Aqui colocarei somente a parte que acho mais importante, quando resolvemos implementar em nossas adaptações o uso de mais de uma Planilha no Arquivo ModeloCadastro_Dados.xls alem da Fornecedores:
Então no Formulário CADASTRO, na DECLARAÇÃO temos :
As Variaveis referentes as Colunas (Constante = 1,2,3..), aonde podem observar tambem, que, utilizamos Nomes que condizem com o que queremos, ou seja, colCodigoDoFornecedor, ao analizarmos a rotina já sabemos que se trata de um Valor Numérico sendo este o "Código do Fornecedor" que se encontram na Coluna A(1) e assim sucessivammente :
Const colCodigoDoFornecedor As Integer = 1
Const colNomeDaEmpresa As Integer = 2
Const colNomeDoContato As Integer = 3
Nessas Linhas, definimos as Cores BackGround dos Controles:(Opcional)
Const corDisabledTextBox As Long = -2147483633
Const corEnabledTextBox As Long = -2147483643
A Variável em destaque aonde definimos com a Constante o Nome do Objeto :
Const nomePlanilhaCadastro As String = "Fornecedores"
Logo abaixo temos :
A Variável wsCadastro
O objeto Worksheet representa uma planilha
Private wsCadastro As Worksheet
A Variável wbCadastro
Workbook representa uma pasta de trabalho
Private wbCadastro As Workbook
Observem que na linha acima, enquanto não alterarmos a Referência a variavel wbCadastro a mesma representa a Pasta Ativa.
Depois temos mais duas variáveis importantes :
Const indiceMinimo As Byte = 2
Aonde definimos a Linha 2 como Inicial na Planilha Fornecedores(nomePlanilhaCadastro) em que se
encontram os Registros, ja que a Linha 1 é o Cabeçalho, e,
Private indiceRegistro As Long
Nessa variável alguns teem feito confusão entendendo como sendo a Linha, mas na verdade indiceRegistro é quem define qual registro será carregado, e o índice é o número da linha na planilha, e que atraves da rotina CarregaRegistroPorIndice alimenta e define o IndiceRegistro informando em qual linha o mesmo se encontra.
Nessa segunda parte irei mostrar como efetuamos as referencias a uma nova planilha adicionada ao arquivo ModeloCadastro_Dados.xls alem da Fornecedores ja existente:
Abrimos o Arquivo ModeloCadastro_Dados.xls normalmente, criamos uma nova planilha(ABA) e damos o nome de Clientes.
Criamos um Cabeçalho somente com 3 colunas, colCodCliente, colNomeCliente e colTelefoneCliente, depois criamos as variáveis e atribuímos as Const para as colunas conforme mostrado acima, como estamos utilizando a mesma formatação da planilha Fornecedores, algumas varáveis poderiam ser mantidas, mas por enquanto as deixamos como estão.
Feito isso vamos criar a referencia a planilha Clientes, então como já temos a variavel que define a nomePlanilhaCadastro como Fornecedores, adicionamos uma nova da seguinte forma:
Const nomePlanilhaClientes As String = "Clientes", depois criamos outra variavel informando que a mesma é uma planilha:
Private wsCliente As Worksheet,
e como estamos utilizando o mesmo Workbook (wbCadastro) NÃO alteramos essa referencia.
Concluído as Variáveis acima, na Rotina, DefinePlanilhaDados adicionamos a referencia a essa nova Planilha, colocando logo APÓS a instrução:
Set wsCadastro = wbCadastro.Worksheets(nomePlanilhaCadastro)
a referência à nova Planilha da seguinte forma:
Set wsCliente = wbCadastro.Worksheets(nomePlanilhaClientes)
Agora, sempre que quisermos buscar os registros na planilha Clientes usamos a referencia criada acima (wsCliente), é lógico que temos de fazer as adaptações nas demais rotinas:
Por exemplo usando a rotina CarregaRegistro que traz os Registros que estão na planilha Fornecedores, poderiámos utilizar uma instrução IF . .Else para verficarmos a qual planilha estamos pesquisando, mas isso fica para outro dia, então, da maneira mais simples criamos uma nova rotina, ficando assim :
Exemplificando somente uma linha, na Rotina do Botão OK, opção Excluir aonde temos :
Ficaria assim :
Espero ter conseguido me expressar da forma correta, e de maneira clara, e de ante mão peço desculpas se errei em alguma linha, ou expressão, mas que podemos consertar na sequencia.
abraços, e até a próxima.
Principais Mudanças do ModeloCadastro V3 (viewtopic.php?f=5&t=366),
e vendo a dificuldade daqueles que não teem muita intimidade com VBA ou estão iniciando, resolvi me aprofundar um pouco mais, passando mais algumas noções :
Antes de mais nada, precisamos ter em mente o conceito referente a:
Pasta e Planilha (Workbook, Worksheet), e como é um assunto um pouco complexo e Longo, vocês podem usar a própria Ajuda do VBA para entender um pouco mais ou nos endereços abaixo, aonde tem as definições muito bem explicadas.
1) Lição 04: VBA - Trabalhando com o objeto Application
http://www.juliobattisti.com.br/excel12 ... licao4.htm
2 ) Lição 05: Trabalhando com o Objeto Workbook
http://www.juliobattisti.com.br/excel12 ... licao5.htm
3 ) Lição 06: Trabalhando com o Objeto Worksheet
http://www.juliobattisti.com.br/excel12 ... licao6.htm
Algumas das duvidas e confusões que percebi em alguns Modelos adaptados, é que como no Modelo Cadastro V3 utiliza dois Arquivos, e na Pasta Front_End temos dois Ranges Nomeados referentes ao Caminho e Nome do Arquivo, e esses nomes estão definidos como PASTA_DADOS e ARQUIVO_DADOS, aonde o primeiro, PASTA, não se refere ao nome da pasta em questão e sim o Local, Caminho em que se encontra o ARQUIVO_DADOS(ModeloCadastro_Dados.xls) e o segundo, o Nome do Arquivo.
Ficando essa parte entendida vamos para a rotina :
Aqui colocarei somente a parte que acho mais importante, quando resolvemos implementar em nossas adaptações o uso de mais de uma Planilha no Arquivo ModeloCadastro_Dados.xls alem da Fornecedores:
Então no Formulário CADASTRO, na DECLARAÇÃO temos :
As Variaveis referentes as Colunas (Constante = 1,2,3..), aonde podem observar tambem, que, utilizamos Nomes que condizem com o que queremos, ou seja, colCodigoDoFornecedor, ao analizarmos a rotina já sabemos que se trata de um Valor Numérico sendo este o "Código do Fornecedor" que se encontram na Coluna A(1) e assim sucessivammente :
Const colCodigoDoFornecedor As Integer = 1
Const colNomeDaEmpresa As Integer = 2
Const colNomeDoContato As Integer = 3
Nessas Linhas, definimos as Cores BackGround dos Controles:(Opcional)
Const corDisabledTextBox As Long = -2147483633
Const corEnabledTextBox As Long = -2147483643
A Variável em destaque aonde definimos com a Constante o Nome do Objeto :
Const nomePlanilhaCadastro As String = "Fornecedores"
Logo abaixo temos :
A Variável wsCadastro
O objeto Worksheet representa uma planilha
Private wsCadastro As Worksheet
A Variável wbCadastro
Workbook representa uma pasta de trabalho
Private wbCadastro As Workbook
Observem que na linha acima, enquanto não alterarmos a Referência a variavel wbCadastro a mesma representa a Pasta Ativa.
Depois temos mais duas variáveis importantes :
Const indiceMinimo As Byte = 2
Aonde definimos a Linha 2 como Inicial na Planilha Fornecedores(nomePlanilhaCadastro) em que se
encontram os Registros, ja que a Linha 1 é o Cabeçalho, e,
Private indiceRegistro As Long
Nessa variável alguns teem feito confusão entendendo como sendo a Linha, mas na verdade indiceRegistro é quem define qual registro será carregado, e o índice é o número da linha na planilha, e que atraves da rotina CarregaRegistroPorIndice alimenta e define o IndiceRegistro informando em qual linha o mesmo se encontra.
Tomando por base o exposto acima, conseguiremos entender as outras rotinas, CarregaRegistro, AtualizaRegistroCorrente, SalvaRegistro e os eventos dos botões que usam essa informação.Public Sub CarregaRegistroPorIndice(ByVal indice As Long)
........... 'carrega os dados do registro baseado no índice
...........indiceRegistro = indice
Call CarregaRegistro
End Sub
Nessa segunda parte irei mostrar como efetuamos as referencias a uma nova planilha adicionada ao arquivo ModeloCadastro_Dados.xls alem da Fornecedores ja existente:
Abrimos o Arquivo ModeloCadastro_Dados.xls normalmente, criamos uma nova planilha(ABA) e damos o nome de Clientes.
Criamos um Cabeçalho somente com 3 colunas, colCodCliente, colNomeCliente e colTelefoneCliente, depois criamos as variáveis e atribuímos as Const para as colunas conforme mostrado acima, como estamos utilizando a mesma formatação da planilha Fornecedores, algumas varáveis poderiam ser mantidas, mas por enquanto as deixamos como estão.
Feito isso vamos criar a referencia a planilha Clientes, então como já temos a variavel que define a nomePlanilhaCadastro como Fornecedores, adicionamos uma nova da seguinte forma:
Const nomePlanilhaClientes As String = "Clientes", depois criamos outra variavel informando que a mesma é uma planilha:
Private wsCliente As Worksheet,
e como estamos utilizando o mesmo Workbook (wbCadastro) NÃO alteramos essa referencia.
Concluído as Variáveis acima, na Rotina, DefinePlanilhaDados adicionamos a referencia a essa nova Planilha, colocando logo APÓS a instrução:
Set wsCadastro = wbCadastro.Worksheets(nomePlanilhaCadastro)
a referência à nova Planilha da seguinte forma:
Set wsCliente = wbCadastro.Worksheets(nomePlanilhaClientes)
Agora, sempre que quisermos buscar os registros na planilha Clientes usamos a referencia criada acima (wsCliente), é lógico que temos de fazer as adaptações nas demais rotinas:
Por exemplo usando a rotina CarregaRegistro que traz os Registros que estão na planilha Fornecedores, poderiámos utilizar uma instrução IF . .Else para verficarmos a qual planilha estamos pesquisando, mas isso fica para outro dia, então, da maneira mais simples criamos uma nova rotina, ficando assim :
Como podem observar, usei a Variável indiceRegistro, sendo que para a Rotina acima devemos efetuar as devidas alterações, ou redirecionando a mesma para a planilha Clientes ou criando novas rotinas, o que eu acho mais viável, para começarmos a entendermos sua lógica.Private Sub CarregaRegistroCliente()
'carrega os dados do primeiro registro
....With wsCliente
.......If Not IsEmpty(.Cells(indiceRegistro, colCodCliente)) Then
...........Me.txtCodigoFornecedor.Text = .Cells(indiceRegistro, colCodCliente).Value
...........Me.txtNomeEmpresa.Text = .Cells(indiceRegistro, colNomeCliente).Value
...........Me.txtNomeContato.Text = .Cells(indiceRegistro, colTelefoneCliente).Value
.......End If
....End With
End Sub
Exemplificando somente uma linha, na Rotina do Botão OK, opção Excluir aonde temos :
Código: Selecionar todos
wsCadastro.Range(wsCadastro.Cells(indiceRegistro, colCodigoDoFornecedor), wsCadastro.Cells(indiceRegistro, colCodigoDoFornecedor)).EntireRow.Delete
Por hora seria isso, com as explicações acima ja temos material para adicionarmos quantas planilhas quisermos e referencia-las, frizando que é somente uma introdução basica referente ao Formulário Cadastro e aos Arquivos, mas se levado a sério e assimilarmos tudo, as outras rotinas tiramos de letra, conseguindo entender as rotinas do formulário PESQUISA, e tambem para que os colegas tenham uma noção o porque sempre frizo da importância de acertarmos os nomes e referencias de acordo com a adaptação, quando nos porpomos a ajudar, ficando mais fácil de localizar o erro.wsCliente.Range(wsCliente.Cells(indiceRegistro, colCodCliente), wsCliente.Cells(indiceRegistro, colCodCliente)).EntireRow.Delete
Espero ter conseguido me expressar da forma correta, e de maneira clara, e de ante mão peço desculpas se errei em alguma linha, ou expressão, mas que podemos consertar na sequencia.
abraços, e até a próxima.