Boa noite,
Criei uma Userform que contém 40 Textbox, esta busca informação em uma Sheet para exibir a informação na userform na formatação correta (com separador de milhar) e criei um IF para verificar se o valor é maior que 1, se for usar a formatação sem decimais se for menor que 1 use decimais. O meu problema está na volta, quando faço alteração na userform e vou colocar o valor de volta para a sheet, os valores estão voltando como texto e não números.
Private Sub UserForm_Activate()
For i = 1 To 40
UserForm2.Controls("Label" & i).Caption = ThisWorkbook.Sheets("LD").Range("Y4").Offset(i - 1, 0) & _
" (" & ThisWorkbook.Sheets("LD").Range("AC4").Offset(i - 1, 0) & ")"
If ThisWorkbook.Sheets("LD").Range("AB4").Offset(i - 1, 0) > 1 Then
UserForm2.Controls("Textbox" & i) = FormatNumber(ThisWorkbook.Sheets("LD").Range("AB4").Offset(i - 1, 0), 0)
Else: UserForm2.Controls("Textbox" & i) = FormatNumber(ThisWorkbook.Sheets("LD").Range("AB4").Offset(i - 1, 0), 2)
End If
Next
UserForm2.CommandButton1.Caption = "Editar Valores"
End Sub
Abaixo está o código do botão que está na userform para editar valores e retornar eles para sheet após alterações.
Sub EditMP() 'Editar valores da Userform2
If UserForm2.CommandButton1.Caption = "Editar Valores" Then 'unlock for editing.
For i = 1 To 40
UserForm2.Controls("Textbox" & i).Enabled = True
Next
UserForm2.CommandButton1.Caption = "Salvar Alterações"
ElseIf UserForm2.CommandButton1.Caption = "Salvar Alterações" Then 'put back info into sheets
For i = 1 To 40
ThisWorkbook.Sheets("LD").Range("AB4").Offset(i - 1, 0) = UserForm2.Controls("Textbox" & i) 'esta dando problema na volta, _
os valores estão voltando como texto para a planilha.
UserForm2.Controls("Textbox" & i).Enabled = False
Next
UserForm2.CommandButton1.Caption = "Editar Valores"
End If
End Sub
Para tentar corrigir o problema, tentei então estipular a volta da informação para a sheet fosse em formato de número alterando o código para:
Sub EditMP() 'Editar valores da Userform2
If UserForm2.CommandButton1.Caption = "Editar Valores" Then 'unlock for editing.
For i = 1 To 40
UserForm2.Controls("Textbox" & i).Enabled = True
Next
UserForm2.CommandButton1.Caption = "Salvar Alterações"
ElseIf UserForm2.CommandButton1.Caption = "Salvar Alterações" Then 'put back info into sheets
For i = 1 To 40
ThisWorkbook.Sheets("LD").Range("AB4").Offset(i - 1, 0) = FormatNumber(UserForm2.Controls("Textbox" & i)) 'aqui que fiz a alteração!!!!
UserForm2.Controls("Textbox" & i).Enabled = False
Next
UserForm2.CommandButton1.Caption = "Editar Valores"
End If
End Sub
Porém ao retornar o valor para a sheet o número que era 3mil (3000) volta como 3.000 e ai a planilha não entende que isto é um número e sim um texto.
Basicamente estou querendo pegar valores da planilha, deixar números que não tem decimais e exibi-los com separador de milhares e os que tem decimais apresentar eles como tal e na volta certificar-se que o valor que irá retornar para a planilha é um número mesmo.
Alguém poderia me dar uma luz por gentileza?
Att,
Luis
Postado : 25/08/2015 2:19 pm