Ir para conteúdo
Fórum Script Brasil

Renato Knupp

Membros
  • Total de itens

    57
  • Registro em

  • Última visita

Tudo que Renato Knupp postou

  1. è melhor você ser mais especifico. de qlqr forma você pode usar várias formas para se fazer isso, o principal é analisar a situação. Dim aux As Integer aux = 1 While Plan1.Range("a" & aux).Value <> "" aux = aux + 1 Wend Plan1.Range("a" & aux).Value = aux mas lembre-se que se o numero de linhas for muito grande esse código poderá se tornar muito repetitivo e pesado.
  2. cara não entendi nada do que você quer, seja mais específico. no caso do código abaixo ele vai colocar o valor em "b1", afinal é isso que você está definindo. Se você está utilizando a variável modif para incrementar, você deverá utilizá-la para mudar de linha: Dim modif as integer modif = 1 While modif <= Range("f3").Value: Range("b" & modif).Value = modif modif = modif + 1 Wend não sei se simplesmente isso te ajuda.
  3. Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If Not (KeyAscii >= 48 And KeyAscii <= 57 Or KeyAscii = 8) Then KeyAscii = 0 End If End Sub
  4. If Plan1.Range("B2").Value <> "" Then 'altere o endereço de acordo com sua necessidade ActiveWorkbook.SaveAs Filename:="C:\temp\" & Plan1.Range("B2").Value & ".xls", FileFormat:=xlExcel8 End If Lembre-se que as pastas informadas deverão existir.
  5. Eu tentei isso João, delimitei os destinatários com ponto e virgula normalmente, mas quando está com mais de um e-mail (com apenas um e-mail funciona) apresenta a seguinte mensagem de erro na linha .send : Erro em tempo de execução '-2147418113 (8000ffff)': Could not resolve the message recipients a delimitação com o ponto e vírgila está correta pois o codigo antigo que tenho onde eu não faço referência a dll, funciona normalmente para varios destinatários só que nele eu utilizo os parametros .to e .cc Vlw pela atenção
  6. Bom dia a todos, estou utilizando o código acima. Já baixei a dll (http://www.dimastr.com/redemption/redemption.zip?bcsi_scan_33EC5CC093529D1E=0&bcsi_scan_filename=redemption.zip) está tudo funcionando perfeitamente. O problema é que o parametro .Recipients.Add "someone@somewhere.com" só envia o e-mail para um destinatári e quando tento enviar para mais de um não funciona e no meu caso o campo Para possui mais de um destinatário, eu preciso enviar com cópia e com cópia oculta e ambos possuem também mais de um destinatário. segue código: Private Function correio() dim oOutlookApp As Object, oOutlookMessage As Object Dim mySafeEmail As Redemption.SafeMailItem Set oOutlookApp = CreateObject("Outlook.Application") oOutlookApp.Session.Logon Set oOutlookMessage = oOutlookApp.CreateItem(olMailItem) Set mySafeEmail = CreateObject("Redemption.SafeMailItem") texto = "e-mail para teste" With mySafeEmail .Item = oOutlookMessage .Subject = "teste" 'a variável contato é definidada pelo usuário .Recipients.Add contato .Recipients.ResolveAll .Body = texto .Send End With End Function os parametros .to , .CC e .BCC não funcionam nesse caso (também não sei porque)
  7. Pessoal, criei uma rotina em VBA para atribuir bordas a um determinado grupo de células ( o grupo varia), conforme abaixo Private Function borda_Espessa() Workbooks(nome_arquivo).Worksheets(planilha).Range(celulas).Borders(xlEdgeLeft).LineStyle = xlContinuous Workbooks(nome_arquivo).Worksheets(planilha).Range(celulas).Borders(xlEdgeLeft).Weight = xlThick Workbooks(nome_arquivo).Worksheets(planilha).Range(celulas).Borders(xlEdgeTop).LineStyle = xlContinuous Workbooks(nome_arquivo).Worksheets(planilha).Range(celulas).Borders(xlEdgeTop).Weight = xlThick Workbooks(nome_arquivo).Worksheets(planilha).Range(celulas).Borders(xlEdgeBottom).LineStyle = xlContinuous Workbooks(nome_arquivo).Worksheets(planilha).Range(celulas).Borders(xlEdgeBottom).Weight = xlThick Workbooks(nome_arquivo).Worksheets(planilha).Range(celulas).Borders(xlEdgeRight).LineStyle = xlContinuous Workbooks(nome_arquivo).Worksheets(planilha).Range(celulas).Borders(xlEdgeRight).Weight = xlThick End Function só que apresenta um erro : Não é possivel definir a propriedade LineStyle da classe border as variáveis são definidas de acordo com a variação das células e nome do arquivo, mas acho que não é esse o problema pois outras duas funções com a mesma finalidade não apresentam erro (hora funciona , hora da o erro), estive lendo a respeito e algumas pessoas disseram que isso é uma falha do office. O interessante é que se eu abrir um documento novo e copiar o codigo pra lá ele funciona mas se eu salvar esse doc , fechar e abrir novamento ele já começa a dar o erro. Alguém sabe com resolver isso?
  8. só consegui baixa a versão 4.12, e ela por ser trial não da supurte para descobrir a senha do vba.
  9. Dê uma olhada no tópico "Como listar informações em listbox? postado por adriano944.
  10. Bom dia galera, alguém conhece alguma macro que desbloquei os códigos do VBA quando estão protegidos por senha? não encontrei nada parecido no forum.
  11. A funçaõ que descrvi faz uma verificação na sua planilha apenas para saber qual é a ultima linha, quando eu digo que alguma variavel vai receber UltimaLinha, ou seja o nome da função, significa que onde o parametro estiver escrito ele vai executar a função e vai retornar o valor que encontrou. quando eu digo: plan1.range("a1").value = ultimalinha nesse caso a celula A1, vai receber o resultado da função que foi executada.Foi só para testar se estava ok, se não estiver é só aumentar ou diminuir o numero que é subtraido na função ( de uma olhada lá um coloquei ajusta posição). entendeu para que serve uma função? agora imagina o seguinte, digamos que em seu codigo você vai precisar de repitir isso 100 vzs, ai você vai lá e chama a função essas 100 vzs, vai ficar pesado. por isso sugeri que usasse o parametro: aux = ultimalinha ou seja, uma variavel vai receber o resultado obtido pela verificação da função (que será executada apenas uma vez) e a partir dai você pode usar a variavel (que tem o valor que você quer) sem pesar o programa. deu pra entender ou compliquei mais ainda? no caso do listbox a dica da Michele ajuda.
  12. No caso da planilha que sempre altera o numero de linhas você pode utilizar uma função para capturar a ultima linha: Private Function UltimaLinha() Dim i, j As Integer i = 1 j = 1 'o 10 é utilizado como contador, quando o sistema encontra 10 linhas vazias ele para de verificar While (j <> 10) 'defina uma coluna para servir como ponto de verificação, de preferencia uma coluna principal que não recena muitas células em branco. If (Plan1.Range("a" & i).Value <> "") Then j = 1 i = i + 1 Else j = j + 1 i = i + 1 End If Wend 'ajusta a posição da linha UltimaLinha= i - 11 End Function para testar é só fazer um campo qualquer receber a função UltimaLinha e ajustar caso o valor não fique correto. plan1.range("b1").value = ultimalinha só tenha cuidado que se a função for utilizada varias vzs o sistema pode ficar lento, uma saida é fazer uma outra variavel receber o valor da função e a partir dai utilizar a variavel. aux = ultimalinha plan1.range("b1").value = aux no caso do list box você pode utilizar o evento ListBox1.List (linha,coluna) e um contador para dividir os valores entre as colunas, com a ajuda da função ultimalinha não fica tão dificil. segue um exemplo de como trabalha com a propriedade: Private Sub cmdteste_click() Dim i As Single ListBox1.ColumnCount = 3 For i = 0 To 5 MyArray(i, 0) = i MyArray(i, 1) = Rnd MyArray(i, 2) = Rnd Next i ListBox1.List() = MyArray end sub espero ter ajudado.
  13. Renato Knupp

    Validar data

    Em que evento eu uso a mascara do format , não consegui utiliza-la em nenhum evento da tex nem no active do form. A função isdate () não valida, eu usei a data 90/09/09 12:00 e ele validou, ele so não valida se o mes for maior que 12.
  14. Renato Knupp

    Validar data

    Galera estou com um problema, vou adicionar um form em uma planilha. dentro dele eu terei varias textbox (20) e terei que inserir em cada uma, uma data no formato dd/mm/aa hh:mm, mas parece que no vba não tem uma opção em propriedades para inserir máscara, então eu fiz uma rotina para criar a mascara que está abaixo: Private Sub TextBox1_Change() Dim text, i As String text = TextBox1.text If Len(text) = 2 Then text = text + "/" TextBox1.text = text TextBox1.SelStart = 4 End If If Len(text) = 5 Then text = text + "/" TextBox1.text = text TextBox1.SelStart = 6 End If If Len(text) = 8 Then text = text + " " TextBox1.text = text TextBox1.SelStart = 10 End If If Len(text) = 11 Then text = text + ":" TextBox1.text = text TextBox1.SelStart = 13 End If End Sub só que como eu faço para validar essa data? o vba não tem uma opção mais prática para mascara e validação? não achei nenhum tópico no forum sobre o assunto.
  15. obrigado a todos, os códigos acima funcionaram, o grande problema foi que por não ter muito conhecimento no VBA eu estava colocando no lugar errado. Então vai ai de forma mais detalhada pra se alguém precisar não ter que bater cabeça como eu. na janela de desenvolvimento do projeto, na janela Projeto - VBA Project ( onde fica a árvore com as planilhas abertas), clique com o botão direito na opção EstaPasta_de_trabalho e escolha a opção Exibir Código, ai sim você poderá digitar o código: Private Sub Workbook_Open() Worksheets("Plan1").ComboBox1.AddItem "Olá," Worksheets("Plan1").ComboBox1.AddItem "Consegui, heeeeeee" Worksheets("Plan1").ComboBox1.AddItem "hurruuuuuu!!!" End Sub O anderson já tinha até dito isso acima mas eu não me liguei. Vlw
  16. Não deu certo. Deixa eu ser mais claro, por exemplo a combo tem uma caixa para preenchimento das propriedades( name, text , style...) , ali tem alguma propriedade para eu cadastrar suas opções? por exemplo se eu usar uma combo em um form com esse codigo: Private Sub UserForm_Activate() combobox1.AddItem ("janeiro") combobox1.AddItem ("Fevereiro") End Sub toda vez que eu der um show nesse form a combo já virá com as opções, até ai normal. só que não da para usar um form, tenho que inserir a combo direto na planilha, então tentei usar dessa forma: Private Sub Workbook_Open() combobox1.AddItem ("janeiro") combobox1.AddItem ("Fevereiro") End Sub ou Private Sub Workbook_activate() combobox1.AddItem ("janeiro") combobox1.AddItem ("Fevereiro") End Sub mas nenhuma das formas acima funciona.
  17. cara criar uma tabela dinâmica é algo um pouco complicado para explicar sem ver sua planilha, faz o seguinte me manda seu e-mail que eu te envio uma planilha aqui que cria uma tabela e está toda comentada, vai ficar bem facil de entender e você visualizar o que está colocando de errado.
  18. cara o erro 5 é porque você esta excedendo o intervalo de valores permitidos. Os seu dados vão até a linha 1.048.576 mesmo?
  19. como faço para definir um parametro ao iniciar minha planilha? por exemplo estou usando uma combo e quero que ela já receba os meses do ano e que a propriedade text dela fique preenchida com o mes atual. Eu tentei usar os comandos dentro da propridade Worksheet_Activate, mas como já se esperava toda vez que eu reativo a planilha a informação muda, tem alguma propriedade da planilha que eu posso inserir os códigos para serem carregados no momento eu que a planilha foi aberta ou em uma forma melhor de se fazer isso?
  20. Renato Knupp

    Limpar formato

    Putz simples assim! Valeu !
  21. Renato Knupp

    Limpar formato

    Boa tarde a todos! como faço para limpar os formatos da minha planilha sem ter que definir as células, ou seja, uma função que limpe o formato de todas as células da planilha?
  22. Não sei se entendi direito mas se você definir o formato da célula que vai receber a data não resolve? Plan1.Range("a1").NumberFormat = "dd/mm/yyyy"
×
×
  • Criar Novo...