Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#64005
Olá, pessoal. Tudo bom?
Gostaria de uma ajuda.
Essa planilha já me deu bastante dor de cabeça e só falta isso pra ficar perfeita.

O que ocorre é o seguinte:
Fiz alguns formulários dentro da planilha mesmo com elementos ActiveX. Até tranquilo, deu tudo certo e tal. Contudo, não consigo formatar as células as quais eles estão linkados. Como consigo formatar elas?
É necessário a formatação pois criei uma macro que as copiam e colam pra uma planilha de "banco de dados" e nela as células estão formatadas e chegando lá os valores são copiados com os erros de formatação.

Imagem

Na imagem o erro é de valor. O erro fala que a célula foi formatada como texto e, no caso, é um número. Por mais que eu tente converter pra número através do erro, não consigo.
E sim, ainda vou formatar, através de VBA os campos onde a pessoa vai digitar.
Você pode me ajudar, por favor?

A planilha está nesse link abaixo:

https://drive.google.com/file/d/1m0BoXF ... sp=sharing
Editado pela última vez por yuricgy em 24 Abr 2021 às 18:10, em um total de 1 vez.
#64037
Muito obrigado ☺️

No caso, é porque quando eu colo, mesmo pedindo pra colar somente valores sem formatação, o Excel insiste em colocar o formato do conteúdo que seria texto, contudo, a planilha já tá toda formata com os formatos certos e não ficam quando colados dessa forma que estou fazendo. Segue o código da macro/VBA:

Sub Nova_Doacao()
'Faz nova doação
Sheets("Doar").Select
Range("A2:E2").Select
Range("E2").Activate
Selection.Copy
Sheets("Bco_Doacoes").Select
Call LinhaVazia
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.End(xlUp).Select
Sheets("Doar").Select
Range("B2:D2").Select
Range("D2").Activate
Selection.ClearContents
Range("B2").Select
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
End Sub
#64041
na planilha bco_doacoes todas as células já estão formatadas como geral, assim quando vc cola somente valores ele vai mesmo continuar como geral, não entendi o que vc quer que aconteça exatamente.
#64045
Então, não é que seja um erro. A minha linkedcell, que é de onde eu copio os valores está formatada como geral e não aceita outra formatação. Esses dados estão vendo de um combobox. Daí, por não aceitar essa mudança essa formatação vai na cópia, por mais que eu peça pra somente colar os valores sem formatação
#64049
oi @yuricgy , veja seu eu entendi mesmo, fiz uma função que vai formatar aquela célula do valor da doação em número com 2 casas

Sub MudarParaNumero()

Cells(ActiveCell.Row, 4).Value = CDbl(Cells(ActiveCell.Row, 4).Value)
Cells(ActiveCell.Row, 4).NumberFormat = "0.00"

End Sub

ahi, na sua sub nova_docao, depois de copiar os dados, vc chama a função

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Call MudarParaNumero

rodando aqui ficou como número bunitinho, com duas casas decimais.

essa função CDbl transforma um text num tipo double ( número com vírgula )
#64055
yuricgy escreveu:Por mais que eu tente converter pra número através do erro, não consigo.
Além do "valor", a "data" também é colada como texto.
Para contornar acrescente as duas linhas em vermelho conforme abaixo na Sub Nova_Doacao.

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells(ActiveCell.Row, 3).TextToColumns , FieldInfo:=Array(1, 4)
Cells(ActiveCell.Row, 4).TextToColumns , FieldInfo:=Array(1, 1)



Se você quiser testar, o código abaixo faz o trabalho com menos esforço, não utiliza células auxiliares (linked cell).
Código: Selecionar todos
Sub Nova_DoacaoV2()
 Dim LR As Long
  With Sheets("Bco_Doacoes")
   LR = .Cells(Rows.Count, 1).End(3).Row + 1
   If LR = 2 Then .Cells(LR, 1) = 1 Else .Cells(LR, 1) = .Cells(LR - 1, 1) + 1
   .Cells(LR, 2) = ActiveSheet.ComboBox1.Text
   .Cells(LR, 3) = CDate(ActiveSheet.TextBox2.Text)
   .Cells(LR, 4) = CDbl(ActiveSheet.TextBox1.Value)
   .Cells(LR, 5) = ActiveSheet.ComboBox3.Text
  End With
  With ActiveSheet
   .ComboBox1.Text = ""
   .TextBox2.Value = ""
   .TextBox1.Value = ""
   .ComboBox3.ListIndex = -1
  End With
  ActiveWorkbook.RefreshAll
  ActiveWorkbook.Save
End Sub
#64099
yuricgy escreveu: 24 Abr 2021 às 18:11 Resolução
Código: Selecionar todos
=SE(D2="";"";VALORNUMÉRICO(D2))
#:?: # :?: # :?:
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord