Pergunte aqui
0

Formatação Personalizada em campo texto

perguntadas 2020-03-21 23:12:12 +0200

imagem do gravatar de Schiavinatto

updated 2020-03-26 18:17:09 +0200

imagem do gravatar de Leandro Vieira

Tenho um campo texto ( 9 caracteres ) que representa o código do produto.

Atualmente o usuário digita de três em três separados por um espaço. ( ABC DEF GFR )


Pergunta valendo 25 pontos.....

A maneira de Formatar a célula para se digitar os 9 caracteres seguidos e visualmente mostrar 3 grupos de 3 ?

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

@Schiavinatto, Tem algum arquivo de exemplo para melhor entendimento?

imagem do gravatar de Leandro VieiraLeandro Vieira ( 2020-03-22 16:09:38 +0200 )editar

Ola @Leandro Vieira, segue uma imagem:

Descrição da imagem

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-03-23 14:56:22 +0200 )editar

A forma mais fácil seria, por exemplo: Se o código é inserido em uma célula fixa $B$4, em A4 inserir a formula =EXT.TEXTO(B4;1;3)&" "&EXT.TEXTO(B4;4;3)&" "&EXT.TEXTO(B4;7;3), copiar e colar em B4 novamente através de uma macro se preferir, porém teria que ter um código para executar ela associada a um evento de planilha.

imagem do gravatar de Leandro VieiraLeandro Vieira ( 2020-03-24 19:13:32 +0200 )editar

Ola @Leandro Vieira, tinha pensado algo assim, mas automático, já que Formatação nada encontrei, nem para o Excel.

Tipo quando se digitar na coluna Código, a macro é acionada automática, por evento, ela copia o texto digitado separa e cola novamente.

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-03-24 19:50:53 +0200 )editar

1 Resposta

0

respondidas 2020-03-25 23:01:07 +0200

imagem do gravatar de Leandro Vieira

updated 2020-03-25 23:03:22 +0200

Schiavinatto, o que posso fazer momentaneamente é compartilhar a macro para copiar e colar a fórmula seguindo a lógica de B4 ser utilizada para inserir o código e A4 estar livre para execução:

sub formato
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 1
args1(1).Name = "Sel"
args1(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())

rem fórmula
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "=EXT.TEXTO(B4;1;3)&"+CHR$(34)+" "+CHR$(34)+"&EXT.TEXTO(B4;4;3)&"+CHR$(34)+" "+CHR$(34)+"&EXT.TEXTO(B4;7;3)"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())

rem colar somente texto
dim args6(5) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Flags"
args6(0).Value = "SVD"
args6(1).Name = "FormulaCommand"
args6(1).Value = 0
args6(2).Name = "SkipEmptyCells"
args6(2).Value = false
args6(3).Name = "Transpose"
args6(3).Value = false
args6(4).Name = "AsLink"
args6(4).Value = false
args6(5).Name = "MoveMode"
args6(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args6())


end sub

Para acionar a macro automaticamente por evento, o que encontrei mais próximo foi em VBA, mas não sei adaptar ao Basic, quem poder contribuir:

Public Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False

If Target.Address = "$A$1" Then
     Select Case Target.Value
            Case 1
                    MsgBox "macro1"
            Case 2
                    MsgBox "macro2"
            Case "dd"
                    MsgBox "macro3"

     End Select

End If
Application.EnableEvents = True

End Sub

Fonte: Tomasvasquez

editar assinalar como ofensivo Excluir Link mais

Comentários

Ola @Leandro Vieira, desta maneira não é viável, pois o uso é em uma coluna. Tentei montar a macro mas esta fora do meu nível.

Pensei o seguinte, o Evento me fornece o último digitado na coluna (até aqui consigo e gera a Variável), tenho que trabalhar esta variável para inserir os espaços e colar novamente no mesmo local.

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-03-26 14:21:49 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2020-03-21 23:12:12 +0200

Lidas: 22 vezes

Última atualização: Mar 25