Ir ao conteúdo
  • Cadastre-se

ArmandPer

Membro Pleno
  • Posts

    64
  • Cadastrado em

  • Última visita

Reputação

2
  1. É sempre bom colaborar com os colegas, pois muitas vezes procuramos uma solução prática e rápida. Considerando que tenha já alguma familiaridade com VBA no Excel. Segue um mini tutorial sobre como alinhar à direita valores em um ListBox, montado com uma matriz em múltiplas colunas, acompanhe: Crie uma pequena planilha como esta: Nomeie um intervalo na planilha que no código depois será visto que vai ajudar muito na verificação de quantos dados estão ocupando as linhas da planilha. No caso o vetor chamei de VT_DATA ... veja a ilustração: feito isso, abra seu editor VBA. Inclua um formulário semelhante a este da figura com as medidas de Height = 212 e Width = 552 A name do Form é FrmLista. Depois inseri um objeto ListBox no Form, que denominei de LstView. Observe as alterações em algumas propriedades importantes no ListBox: Criei também um módulo que chamei de ModArrayList veja a ilustração: Inserir um botão na planilha a partir dos ActiveX disponível na Guia Desenvolvedor do Excel, para chamar o formulário. Bom, já temos um pequena planilha, temos um formulário com um ListBox devidamente configurado as propriedades, temos um módulo onde será criada uma função que vai gerar a matriz para adicioná-la ao ListBox. Vamos ao código: no escopo do módulo... Function Listando() Dim linhasPlan As Long Dim matriz() Dim lin As Long Dim col As Integer Dim valorStr As String 'Fazendo a leitura de quantas linhas de dados _ tenho na planilha ativa, a estando no módulo _ uma forma de mostrar qual é a planilha ativa _ é evocando o objeto que interessa, no caso do _ exemplo é "Plan1". 'Range("VT_DATA"), está relacionando na propriedade _ Range a coleção de células selecionadas e nomeadas _ com VT_DATA. Isso é feito na "caixa de nome" ao lado _ da "caixa de formulas" [fx]. Isso assegura ter a contagem _ de linhas corretas, pois certamente toda descrição de _ duplicata terá uma data. linhasPlan = WorksheetFunction.CountA(Sheets("plan1").Range("VT_DATA")) 'agora temos condição de redimensionarmos a matriz ReDim matriz(lin To linhasPlan, col To 3) 'limpa o objeto ListBox FrmLista.LstView.Clear 'limpando a matriz For i = 0 To linhasPlan For j = 0 To 2 matriz(i, j) = Empty Next j Next i 'Montando o cabeçalho matriz(0, 0) = "DATA" matriz(0, 1) = "DESCRIÇÃO" matriz(0, 2) = "VALOR EM R$" 'acrescentando os dados da Worksheet na matriz For i = 1 To linhasPlan For j = 0 To 2 If j = 2 Then 'coluna de valores 'O Valor é convertido para String que formatado 'a variável valorStr recebe o Valor ajustado com 'a função Space onde tenho uma expressão que 'verifica com a função Len o tamanho da String 'menos 10 caracteres sugeridos, assim completa 'com espaços em branco a frente do valor alinhando 'todos os valores a direita. valorStr = Format(CStr(Sheets("plan1").Cells(i + 1, j + 1)), "###,##0.00") matriz(i, j) = Space(10 - Len(valorStr)) & valorStr Else matriz(i, j) = Sheets("plan1").Cells(i + 1, j + 1) End If Next j Next i Listando = matriz End Function Agora o código no formulário... Private Sub LstView_Click() If LstView.ListIndex <> 0 Then MsgBox "Estou na linha " & LstView.ListIndex & vbLf & vbLf & _ "Informações da linha selecionada: " & vbLf & _ "Data: " & LstView.List(LstView.ListIndex, 0) & vbLf & _ "Descrição: " & LstView.List(LstView.ListIndex, 1) & vbLf & _ "Valor: " & LTrim(LstView.List(LstView.ListIndex, 2)), vbInformation, "MENSAGEM" End If End Sub Private Sub UserForm_Activate() 'Ao clicar no botão que está na planilha 'é acessado o módulo onde o retorno da função Listando 'carrega o LstView. LstView.List = ModArrayList.Listando End Sub e por último o código do botão que se encontra na planilha... Private Sub CmdForm_Click() FrmLista.Show vbModeless End Sub Pronto, assim teremos o seguinte resultado na tela ao clicarmos no botão Formulário que está na planilha: Bom, qualquer dúvida ou se passou alguma informação em branco, comentem. Espero poder ter ajudado alguns colegas em prováveis dúvidas.
  2. Olá Lamcarter. Primeiro, quanto ao erro que deu, certamente o objeto TextBox2.Text não existe na sua Planilha, então ele reclama esse objeto. Pode ser o Name do Objeto. Quanto ao InputBox, é complicado, ele não oferece suporte para o programador para alterar facilmente a condição de mascara. Então temos que apelar para uma programação mais refinada, talvez ainda não conheça, o uso de API's. O InputBox é útil para entradas simples de dados, não para senhas por isso usei a caixa de texto incluindo um activeX na planilha. Seu erro com a TextBox, é nomeação da mesma apenas isso. melhor recorrer por esse recurso por enquanto.
  3. OOPS! Lamcarter, nem precisou do final de semana:D Lembrei, é assim Clique na barra de menu principal em EXIBIR -> Barra de Ferramentas -> Caixa de Ferramentas de Controle... pronto uála... aí está os controles ActiveX, aliás escrevi errado em alguma lugar por aí nos textos:wacko: rsrs... Bom espero que tenha entendido a proposta da senha, beleza...
  4. Olá Lamcarter, tem sim comandos activeX, mas preciso dar uma revisada exatamente aonde estão. Estou vindo de uma cirurgia, só hj deu pra olhar por aqui mesmo assim com um pouco de dificul... mas tento resolver isso pra você até o final de semana fique atento. Att.
  5. Olá Lamcarter, acima de cada imagem está dizendo para clicar que aumenta a imagem. A não ser que no seu navegador não apareça a área para clicar escrito: Clique aqui para ver no tamanho original
  6. Bom, quanto a caixa de texto, ela deve estar incorporada na própria planilha, segue algumas ilustrações que pode ajudar a esclarecer o que pode fazer, inclusive sobre o detalhe da constante como variável global e mais alguns toques sobre declaração de variáveis caso tenha dúvidas. Onde colocar sua caixa de texto: Quanto as propriedades: Quanto a variáveis: Bom, acredito que ajude bastante a imagem. caso tenha alguma dúvida mais sobre VBA, quem sabe possa ajudar. É repartindo o pão que todos tem a melhor solução...
  7. Bom, pode-se trabalhar com uma condicional: coloque na sua planilha uma caixa de texto (activeexe) TextBox1 uma constante como variável global Não esqueça esse detalhes. Clique com o lado direito do mouse na caixa de texto, em propriedades, mude a propriedade PasswordChar = "*" Isso faz com que não se vizualize a senha. Pode ser uma opção, caso tenha encontrado outra até interessante postar Abraços

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!