Particularmente, pelo post não vejo necessidade/vantagem de utilização do array; poderia "gravar" diretamente na planinha.
A maneira que utiliza o Format, nem sempre funciona no VBA (creio ser mais efetiva no VB), prefira Format(seuvalor,"0.00") ou Format(seuvalor,"#.00")....
assim deverá ter os valores reconhecidos. Também pode experimentar :
ThisWorkbook.Sheets("Acos").Range("A" & UltL).Offset(0, i - 1) = SeuValor * 1 (o valor a ser salvo multiplicado por 1)
Boa tarde Reinaldo,
Desculpe a demora para responder, é que não estou recebendo e-mails com notificação de resposta (e sim está marcado como "Notificar-me quando for respondida").
Obrigado por responder.
Continuo com problemas em que não consigo colocar as informações com valores na planilha. Modifiquei o código para adequar as suas sugestões e mesmo assim não obtive sucesso.
Aqui um exemplo:
Sub SaveSteel_2() 'saves the steeel that is about to be registered
Application.ScreenUpdating = False
'find last row occupied.
UltL = ThisWorkbook.Worksheets("Acos").Range("A" & Rows.Count).End(xlUp).Row + 1
For i = 1 To 36
If i = 1 Then
ThisWorkbook.Sheets("Acos").Range("A" & UltL).Offset(0, i - 1) = UserForm3.Controls("Textbox" & i) 'adicionei esse IF pois o primeiro item é texto e achei que talvez fosse isso que estivesse atrapalhando e fazendo com que tudo fosse compreendido como texto.
GoTo SkipName2
End If
ThisWorkbook.Sheets("Acos").Range("A" & UltL).Offset(0, i - 1) = Format(UserForm3.Controls("Textbox" & i), "0.00")
SkipName2:
Next
'refresh the combobox with the new steel.
UltL = ThisWorkbook.Worksheets("Acos").Range("A" & Rows.Count).End(xlUp).Row
ThisWorkbook.Sheets("Acos").Range("A3:A" & UltL).Name = "lista_acos"
UserForm1.ComboBox1.RowSource = "lista_acos"
MsgBox "Cadastro do aço com sucesso!"
UserForm3.Hide
Application.ScreenUpdating = True
End Sub
Tentei sem sucesso também: (porém esse caso está dando erro)
Sub SaveSteel_2() 'saves the steeel that is about to be registered
Application.ScreenUpdating = False
'find last row occupied.
UltL = ThisWorkbook.Worksheets("Acos").Range("A" & Rows.Count).End(xlUp).Row + 1
For i = 1 To 36
If i = 1 Then
ThisWorkbook.Sheets("Acos").Range("A" & UltL).Offset(0, i - 1) = UserForm3.Controls("Textbox" & i)
GoTo SkipName2
End If
ThisWorkbook.Sheets("Acos").Range("A" & UltL).Offset(0, i - 1) = (UserForm3.Controls("Textbox" & i))*1 'a multiplicação
SkipName2:
Next
'refresh the combobox with the new steel.
UltL = ThisWorkbook.Worksheets("Acos").Range("A" & Rows.Count).End(xlUp).Row
ThisWorkbook.Sheets("Acos").Range("A3:A" & UltL).Name = "lista_acos"
UserForm1.ComboBox1.RowSource = "lista_acos"
MsgBox "Cadastro do aço com sucesso!"
UserForm3.Hide
Application.ScreenUpdating = True
End Sub
Alguma outra sugestão? Obrigado pela atenção.
Att,
Luis
Postado : 22/09/2015 1:08 pm