Ir ao conteúdo

txt soma as txt e exporta/planilha


zinhovba

Posts recomendados

Postado

Boa noite!!!...Pessoal tudo beleza?

Eu estou tentando concluir um projeto, então logo irão perceber que sou completamente leigo em VBA Excel 2007 e qualquer outra coisa parecida.

Gostaria de ter na minha UseForm uma txtbox chamada, "valortotal NFº" com um código capaz de somar todos os valores caso sejam digitados nas txtBox's

chamada "Total da Nota", e então depois jogar em minha planilha....

Veja a planilha no Link abaixo:

http://www.4shared.com/file/Yh-SB8__/Lista...sDiretorio.html

Abraços..

Att..

Postado

zinhovba.

gostaria de ajudá-lo, mas não sei como ler a planilha colocada no link.

onde tenho de clicar na página aberta pelo link?

pode me ajudar?

Carlos

Postado

Boa tarde!!

Olá Carlos, valeu pela atenção...

Quando clicar no linhk..seguirá para o site 4Shered.

Após abrir o site, vai ver uma seta para baixo num figura azul, onde vai está escrito DOWNLOAD NOW, click nela e espere passar 30 segundos depois baixe o arquivo.

Segue o linke referente ao assunto...faça um teste.

http://www.4shared.com/document/8_wFTAfK/MINUTA_DE_TRANSPORTEII_2.html

Abraços.

Postado

Boa-tarde, zinhovba.

obrigado pela ajuda

já consegui baixar a planilha; vou analisar

e responderei assim que conseguir solução.

abraço,

Carlos

Postado

Buenas,

O problema na verdade não é no somatório, e sim na validação dos dados.

Uma forma de fazer a soma é usar uma planilha auxiliar para colar os valores das notas, e nessa planilha ter o somatório, que então é enviado para o total geral.

Private Sub totaldanota1_Change()

Dim texto As Currency

texto = totaldanota1

If Not IsNumeric(texto) Then

MsgBox ("digitar somente numeros")

totaldanota1 = ""

End If

Range("V2") = totaldanota1

totalgeral = Format(Range("V4"), "#,##0.00")

End Sub

Private Sub totaldanota2_Change()

Dim texto As Currency

texto = totaldanota2

If Not IsNumeric(texto) Then

MsgBox ("digitar somente numeros")

totaldanota2 = ""

End If

Range("V3") = totaldanota2

totalgeral = Format(Range("V4"), "#,##0.00")

End Sub

Nesse exemplo coloquei só as notas 1 e 2, que gravam respectivamente em V2 e V3, sendo V4 a celula de somatorio delas. A verificação se o texto é numerico funciona só se o caractere não numerico é inserido antes, senão dá erro 13 (tipos incompativeis). Esse é um ponto para melhorar.

Na hora de chamar o botão de abrir, tem que ser limpa a relação dos valores das notas (nesse caso, V2 e V3), para que a tela de inclusão dos dados não fique com um valor irreal.

Postado

Boa noite!!!

LeandroRoldao..Muito Obrigado!!!! por responder...mas

Sou muito leigo no assunto.

Mesmo após seu exemplo (vou tentar fazer dessa forma), gostaria de saber se..

É possível pegar minha txtBox..Totalgeral..e fazer com que ela some as txt's??? :confused:

Obrigado!!!

Postado

Zinho, sim, é isso que esse exemplo faz. Quando o totaldanota1 ou totaldanota2 são alterados (aparecendo ali como _Change() ), ele grava esse valor em uma célula definida, nesse caso, em "V2" e "V3", e envia o resultado dessa soma (nesse caso, em "V4"), para o textbox totalgeral.

Meu conhecimento também não é muito grande, mas como o que é alterado é o total de cada nota, acredito que são esses campos que devem disparar a alteração de valor do total geral. Não conheço então uma forma que o código fique dentro da textbox total geral, mas resolvendo a questão da validação de dados, chega-se no resultado.

Editando...

A partir da validação das teclas pressionadas (keyascii), fiz a validação do campo para que aceite somente números e vírgula.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If KeyAscii = 44 Or KeyAscii = 48 Or KeyAscii = 49 Or KeyAscii = 50 Or KeyAscii = 51 Or KeyAscii = 52 Or KeyAscii = 53 Or KeyAscii = 54 Or KeyAscii = 55 Or KeyAscii = 56 Or KeyAscii = 57 Then

KeyAscii = KeyAscii

Else

KeyAscii = 0

End If

End Sub

Private Sub TextBox1_Change()

Range("A1") = TextBox1

TextBox3 = Format(Range("A3"), "#,##0.00")

End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If KeyAscii = 44 Or KeyAscii = 48 Or KeyAscii = 49 Or KeyAscii = 50 Or KeyAscii = 51 Or KeyAscii = 52 Or KeyAscii = 53 Or KeyAscii = 54 Or KeyAscii = 55 Or KeyAscii = 56 Or KeyAscii = 57 Then

KeyAscii = KeyAscii

Else

KeyAscii = 0

End If

End Sub

Private Sub TextBox2_Change()

Range("A2") = TextBox2

TextBox3 = Format(Range("A3"), "#,##0.00")

End Sub

Criei uma planilha com o formulário exeplo. Está disponível no link abaixo.

http://www.4shared.com/file/BmuPxzJo/somar_notas.html

Postado

Zinho, atualizando, ontem um colega do forum, num outro topico sobre textbox, informou uma forma mais pratica.

É só habilitar nas referencias o item microsoft vbscript regular expressions 5.5, e colocar o código abaixo. Eu adaptei, fazendo a verificação se existe mais de 1 virgula digitada, assim ele aceita somente decimais validos. Nesse exemplo, é pego o valor digitado no textbox1, soma-se 1 ao resultado, e envia-se para o textbox2. Ceio que atenda integralmete a sua necessidade.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim RegExp As VBScript_RegExp_55.RegExp

Dim nTexto As String

nTexto = Me.TextBox1.Text

Set RegExp = New VBScript_RegExp_55.RegExp

With RegExp

.Global = True

.IgnoreCase = True

.MultiLine = False

.Pattern = "[^1234567890,]"

End With

If RegExp.Test(nTexto) = True Then

MsgBox "Somente digitos entre 0-9 e vírgula podem ser digitados"

Me.TextBox1 = Empty

Me.TextBox1.SetFocus

End If

On Error Resume Next

nVirgulas = WorksheetFunction.Search(Chr(44), nTexto, 1)

If nVirgulas <> 0 Then

On Error Resume Next

nVirgulas2 = WorksheetFunction.Search(Chr(44), nTexto, nVirgulas + 1)

If nVirgulas2 > nVirgulas Then

MsgBox ("Número inválido")

Me.TextBox1 = Empty

Me.TextBox1.SetFocus

Else

TextBox2 = TextBox1 + 1

End If

Else

TextBox2 = TextBox1 + 1

End If

Set RegExp = Nothing

End Sub

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...