Formatar Textbox e ...
 
Notifications
Clear all

Formatar Textbox e travar planilha

7 Posts
2 Usuários
0 Reactions
2,267 Visualizações
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Boa noite!
Criei um formulario VBA que alimenta meu banco de dados na planilha, porém, tenho umas textbox's que recebem valores numericos com virgula e outras com datas. Quando eu salvo o registro feito no formulario, os dados vão para a planilha no formato de texto. Queria saber se tem como formatar os valores dessas texbox em numeros e datas para que quando for registrados os dados, os mesmo vão para as celulas com seus respectivos formatos.
Outra questão é que se tem jeito de bloquear as celulas da minha planilha que recebe os valores do formulario, para que ninguem consiga digitar nada nas celulas, elas só receberam seus respectivos dados advindo do formulário.
Se alguém souber da resposta, por favor, me ajude.
Obrigado!

 
Postado : 19/09/2012 8:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Rilton
Ao salvar os dados nas planilhas utilize o format
Ex.: Supondo seu textbox com data que ira "salvar" na plan1 celula B2
sheets("PLAn1").range("B2")=Format(Textbox, "DD/MM/AAAA"), e assim para as demais que forme necessarias.
Qto a proteção de dados, somente com a planilha protegida.
Então em seu codigo antes de iniciar o "salvmento" dos dados deve ter algo como: ActiveSheet.Unprotect PsW (onde PsW e sua senha), e ao finalizar utilize ActiveSheet.Protect PsW

 
Postado : 20/09/2012 6:00 am
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Reinaldo,
Consegui formatar as datas, quanto a proteção dos dados eu não estou conseguindo. Segue em anexo a planilha, vê se consegue escrever o código, por favor!

 
Postado : 20/09/2012 8:29 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Hilton
Segue
Básicamente alterado no trecho abaixo. a senha é TESTE

   With wsCadastroServicos
    .Unprotect "TESTE"
       .Cells(indice, colCodigo).Value = id
       .Cells(indice, colServico).Value = Me.txtServico.Text
       .Cells(indice, colTiposervico).Value = Me.txtTiposervico.Text
       .Cells(indice, colDescricaoservico).Value = Me.txtdescricaoservico.Text
       .Cells(indice, colCalendar1).Value = Me.txtcalendar1.Text
       .Cells(indice, colCalendar2).Value = Me.txtCalendar2.Text
       .Cells(indice, colQexecutores).Value = Me.txtQexecutores.Text
       .Cells(indice, colTempoexecucao).Value = Me.txtTempoexecucao.Text
       .Cells(indice, colTempoparada).Value = Me.txtTempoparada.Text
       .Cells(indice, colTempodeslocamento).Value = Me.txtTempodeslocamento.Text
       .Cells(indice, colHhtotal).Value = Me.txtHhtotal.Caption
    .Protect "TESTE"

Observação.: Vc disse que conseguiu a formatação, porem o trecho do codigo (acima) que faz o cadastro na planilha não está formatado, então as datas poderão ser incluidas em formato ingles (dia no lugar do mes, qdo dia inferior 13), e as horas como numero e não hora

 
Postado : 20/09/2012 9:03 am
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Reinaldo,
Formatei nesta linha:
Me.txtcalendar1.Text = Format(.Cells(indiceRegistro, colCalendar1).Value, "dd/mm/yyyy")
Me.txtCalendar2.Text = Format(.Cells(indiceRegistro, colCalendar2).Value, "dd/mm/yyyy")
e as texbox de horas, eu as uso em numero, por exemplo 00:45 minutos correponde a 0,75.
Quero te agradecer pela ajuda, meu muito obrigado!

 
Postado : 20/09/2012 10:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Somente atenção, como fez vc está foratando o dado recebido pela txtcalendar da planilha
vc deve , para garantir o valor na planilha, fazer
.Cells(indice, colCalendar1).Value =format( Me.txtcalendar1.Text,"DD/MM/AAAA")
.Cells(indice, colCalendar2).Value = format(Me.txtCalendar2.Text,"DD/MM/AAAA")
assim ao salvar o valor na planilha não ocorrerá inversão

 
Postado : 20/09/2012 10:34 am
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Entendi..
Sou muito noob em vba, To aprendendo muito lendo publicações aqui no forum...
Quero te agradecer mais uma vez, obrigado!

 
Postado : 20/09/2012 11:11 am