Notifications
Clear all

Formatar Celulas VBA

4 Posts
2 Usuários
0 Reactions
14 K Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia,
estou com um problema na hora da formatação das celulas na planilha.
fiz um formulário para preencher um relatório, a rotina está perfeita, o meu problema é na formatação.
o formulário não é o fim dos dados, esse são compilados todos em uma planilha do excel e só depois é gerado o relatório.
o problema é que o excel não lê as informações da textbox no formato número. dessa forma, sempre que insiro os dados na planilha, dá um erro no excel dizendo que os dados da celula estão em formato de texto.
assim ele não faz nenhuma operação matemática

a rotina que uso é simples:

Sheets("Plan1").Select
Range("A1"). Select
ActiveCell.Offset(0, 1).Value = MES
ActiveCell.Offset(0, 2).Value = Nprod
ActiveCell.Offset(0, 3).Value = Area
ActiveCell.Offset(0, 4).Value = Produt
ActiveCell.Offset(0, 5).Value = Prod

 
Postado : 10/05/2011 6:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vitor, como citei anteriormente, geralmente os valores de TextBox são Textos e devemos formatar antes de enviar para a planilha, ou após enviado formatar a célula, e para tal existem diversas formas, conforme nossa necessidade :

Imagino que MES é o nome do controle TextBox :
ActiveCell.Offset(0, 1).Value = MES
ActiveCell.Offset(0, 1).Value = Format(Me.MES.Text, "mm/dd/yyyy")

Imagino que Nprod é o nome do controle TextBox :
ActiveCell.Offset(0, 2).Value = Nprod
ActiveCell.Offset(0, 2).Value = CDbl(Nprod.Value)

Nas instruções abaixo, primeiro formatamos o Valor digitado no TextBox1 como Moeda e depois transferimos para a planilha :
TextBox1.Value = Format(TextBox1.Value, "currency")
ActiveCell.Offset(0, 6).Value = CCur(Me.TextBox1)

Na ajuda do VBA, veja, Funções de conversão de tipos, CDbl, Cstr, CCur, Val, entre outros tipos.

Para se formatar uma celula, usamos a Propriedade NumberFormat para definir o seu formato :
Por exemplo :
Primeiro colocamos a Data na celula : =Hoje() no VBA é =Now
ActiveCell.Offset(0, 7).Value = Now
Depois Formatamos a célula para o Formato dia/mes/ano:
ActiveCell.Offset(0, 7).NumberFormat = "mm/dd/yyyy"

Na ajuda do VBA referente a Propriedade NumberFormat temos :

O código de formato é a mesma seqüência de caracteres da opção Códigos de formatação da caixa de diálogo Formatar células. A função Format usa seqüências de código de formato diferentes das usadas pelas propriedades NumberFormat e NumberFormatLocal.

Exemplo
Estes exemplos definem o formato de número para a célula A17, linha um e coluna C (respectivamente) em Sheet1.

Worksheets("Sheet1").Range("A17").NumberFormat = "General"
Worksheets("Sheet1").Rows(1).NumberFormat = "hh:mm:ss"
Worksheets("Sheet1").Columns("C").NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"

Este é um assunto longo, devido as diversas formas que podemos usar, só vai depender de como a queremos utilizar.

Espero que tenha conseguido passar alguma informação útil, qualquer duvida poste sua rotina desde o inicio, de como capta o valor e como é transferido para a planilha.

[]s

 
Postado : 10/05/2011 12:15 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Obrigado, deu certo!!!!!!! =D
resolvido!

 
Postado : 16/05/2011 8:37 am
(@glaudemir)
Posts: 42
Trusted Member
 

Pessoal, sou iniciante em formulários. Uma das dificuldades é que os valores são inseridos na planilha como texto. Procurando aqui no fórum, encontrei as alternativas abaixo, mas mesmo assim não sei muito bem o que fazer com elas. Preciso que o formulário insira datas e valores monetários (Reais). Alguém pode me enviar uma planilha-exemplo com formulário utilizando os exemplos abaixo?

Obrigado.

Glaudemir

Vitor, como citei anteriormente, geralmente os valores de TextBox são Textos e devemos formatar antes de enviar para a planilha, ou após enviado formatar a célula, e para tal existem diversas formas, conforme nossa necessidade :

Imagino que MES é o nome do controle TextBox :
ActiveCell.Offset(0, 1).Value = MES
ActiveCell.Offset(0, 1).Value = Format(Me.MES.Text, "mm/dd/yyyy")

Imagino que Nprod é o nome do controle TextBox :
ActiveCell.Offset(0, 2).Value = Nprod
ActiveCell.Offset(0, 2).Value = CDbl(Nprod.Value)

Nas instruções abaixo, primeiro formatamos o Valor digitado no TextBox1 como Moeda e depois transferimos para a planilha :
TextBox1.Value = Format(TextBox1.Value, "currency")
ActiveCell.Offset(0, 6).Value = CCur(Me.TextBox1)

Na ajuda do VBA, veja, Funções de conversão de tipos, CDbl, Cstr, CCur, Val, entre outros tipos.

Para se formatar uma celula, usamos a Propriedade NumberFormat para definir o seu formato :
Por exemplo :
Primeiro colocamos a Data na celula : =Hoje() no VBA é =Now
ActiveCell.Offset(0, 7).Value = Now
Depois Formatamos a célula para o Formato dia/mes/ano:
ActiveCell.Offset(0, 7).NumberFormat = "mm/dd/yyyy"

Na ajuda do VBA referente a Propriedade NumberFormat temos :

O código de formato é a mesma seqüência de caracteres da opção Códigos de formatação da caixa de diálogo Formatar células. A função Format usa seqüências de código de formato diferentes das usadas pelas propriedades NumberFormat e NumberFormatLocal.

Exemplo
Estes exemplos definem o formato de número para a célula A17, linha um e coluna C (respectivamente) em Sheet1.

Worksheets("Sheet1").Range("A17").NumberFormat = "General"
Worksheets("Sheet1").Rows(1).NumberFormat = "hh:mm:ss"
Worksheets("Sheet1").Columns("C").NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"

Este é um assunto longo, devido as diversas formas que podemos usar, só vai depender de como a queremos utilizar.

Espero que tenha conseguido passar alguma informação útil, qualquer duvida poste sua rotina desde o inicio, de como capta o valor e como é transferido para a planilha.

[]s

 
Postado : 24/09/2013 8:59 am