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.
Por SandroLima
#72498
Bom dia, pessoal.

Poderiam me ajudar com uma macro.

Preciso extrair parte do texto de uma célula... no caso refere-se ao nome de um Ativo.

Estou com dificuldade de encontrar a posição da variável "Fin_Pos_Ativo" inserida na macro que informa a posição final do texto que descreve o ativo pois a descrição do ativo tem quantidade de caracteres variável.

Alguém poderia dar uma sugestão de como eu poderia encontrar essa posição?

Segue a planilha e a macro para verificação.
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por SandroLima em 01 Dez 2022 às 22:54, em um total de 1 vez.
Por SandroLima
#72499
O texto que preciso extrair fica entre os 3º " " espaço contando da esquerda para a direita e o 4º " " espaço da direita para a esquerda.

O total de espaços também consigo calcular via macro... mas como o total de espaços pode variar no texto não consegui pensar em uma forma ainda de obter a posição do " " espaço logo após a descrição do ativo.

Tentei até inserindo o seguinte Bloco para localizar a Posição sabendo que existem 3 espaços no final:
Código: Selecionar todos
Dim A As Long
Dim B As Integer
Dim Posicao As Long

Do While B <= Qtde_Delimitador - 3
      For A = 1 To Len(Texto)
          If Mid$(Texto, A, 1) = " " Then
              B = B + 1
          End If
          Posicao = Posicao + 1
      Next
Loop
Mas também não funcionou.

Na minha litura ele deveria encerrar o loop enquanto B (quantidade de espaços) fosse menor ou igual a 6 (Qtde_Delimitador - 3)... mas ele não saiu do Loop até percorrer todo o texto.

Estou fazendo algo errado nesse bloco... mas o caminho acho que seria esse.
Por osvaldomp
#72500
Selecione J28:J31 e rode o código abaixo. Se o resultado for o desejado então faça a adaptação para a sua necessidade.

O código extrai o texto após a palavra VISTA e até o último N mais um caractere. Sem Loop.
Código: Selecionar todos
Sub ExtraiTexto()
 Dim c As Range, k As Long, v As Long
  For Each c In Selection
   k = InStr(c.Value, "VISTA")
   v = InStrRev(c.Value, "N")
   c.Value = Mid(c.Value, k + 6, v - k - 4)
  Next c
End Sub
SandroLima agradeceu por isso
Por SandroLima
#72504
Boa tarde, Osvaldomp.
Mais uma vez obrigado pela intenção em ajudar.

A alternativa é ótima mas nem sempre irá funcionar.

Nem sempre a palavra "VISTA" antecede a descrição do Ativo... tenho em outras situações a palavra "FRACIONARIO", por exemplo.

Da mesma forma nem sempre a descrição do Ativo termina com a letra "N" seguida de um numeral.

Mas a função InstRev que eu não conhecia pode ser que me ajude a resolver... vou estudá-la, testar umas aplicações com ela e dou retorno.

O padrão que percebi aqui é que a descrição do Ativo está sempre entre o 3º ESPAÇO (" ") da esquerda para a direita e o 4º ESPAÇO (" ") da direita para a esquerda no texto.
Preciso encontrar a posição deles no texto para então extrair a descrição do Ativo.
Por osvaldomp
#72505
SandroLima escreveu: 29 Nov 2022 às 16:35
A alternativa é ótima mas nem sempre irá funcionar.
Discordo! SEMPRE irá funcionar para o padrão de texto que você colocou na planilha.
SandroLima agradeceu por isso
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