Entendi o que vc quer fazer, Marcelo, em seu Userform. Na verdade vc deseja é uma máscara de entrada para os dados da Textbox, eu tava imaginando antes que seria formatar os dados na saída. É uma pena que o VBA não tem o MaskEdit Control (MSMASK32.OCX), disponível no VB desde antigamente, pois seria exatamente o que vc precisa. O Access também tem máscaras de entrada nativas. Caso vc tenha o VB instalado, crie uma referência ao "Microsoft MaskedEditBox Control 6.0 (SP3)". A sintaxe pode ver em https://msdn.microsoft.com/en-us/library/aa733654%28v=vs.60%29.aspx?f=255&MSPPError=-2147217396.
Outras sugestões, caso vc ainda assim queira fazer "na unha" usando a Textbox normal, seriam:
1) Programar os eventos KeyDown/etc da Textbox que a cada pressionamento formate e exiba a apresentação do resultado como desejado (usando o Format(Me..etc..));
2) Se vc deseja que a apresentação na Textbox seja exibida somente ao final, com o conteúdo inteiro já digitado, daria prá usar o evento Change da Textbox.
3) Vc poderia usar duas Textbox, uma para os dígitos inseridos do lado esquerdo (antes da barra) e outra para os do lado direito e uma Label fixa no meio, representando a barra. Aí, no código do CommandButton vc concatenaria o conteúdo das duas antes de enviar o resultado (somente algarismos) para a célula.
De qualquer maneira, quando se usa a função Format a barra inserida transforma o antes número numa String com o literal inserido. Então, antes de devolver para a célula teria que tratar de removê-la para que permaneçam apenas algarismos na célula, e para exibição na célula ou formata a coluna inteira com o formato personalizado 0000/00000 ou no trecho do seu código do Button usaria
Cells(i, 2).NumberFormat = "0000/00000".
Agora o ideal mesmo seria o MaskedEdit, simplificaria muito, pois os literais não ficam fazendo parte do conteúdo ao final.
Postado : 02/12/2016 10:37 am