La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Salve a tutti. Questa volta ho io bisogno di voi.
Ho un elenco di COGNOMINomi importato in una colonna da un sito. COGNOMENome non sono separati e vorrei fare questo, scorrendo la colonna dal primo all'ultimo elemento;
Definisco un array: TxtSplit() As String;
Inserisco il testo COGNOMENome: TxtSplit = Split(Cells(R, C))
Scorro l'array fino a trovare il primo carattere minuscolo. Poi mi arrangerei.
Ma essendo COGNOMENome tutto attaccato i limiti dell'array sono = 0
Infatti in: For I = LBound(TxtSplit) To UBound(TxtSplit) esce subito perché LBound e UBound = 0.
Ovviamente direi, in quanto essendo una stringa continua non trova niente da splittare.
Per farla breve, dovrei individuare il primo carattere minuscolo e da lì mi ricostruisco il testo corretto.
Ma non riesco a trovare una soluzione per scorrere il testo e individuare se il carattere in esame è UCase o LCase.
Qualcuno ne sa di più? Grazie.
Essendo impossibile inserire un testo in un array ho risolto così:
Sub CrtTest()
Dim Mns As String, SepTxt As String
C = 56 'colonna contenente COGNOMENome
With ActiveSheet
LR = .Cells(.Rows.Count, C).End(xlUp).Row
End With
'
For R = 3 To LR
For T = 1 To Len(Cells(R, C))
Mns = Mid(Cells(R, C), T, 1)
Select Case Mns
Case Is = " ", "-" 'salta e passa a prox crt
Case Is = LCase(Mns)
SepTxt = Left(Cells(R, C), T - 2) & " "
SepTxt = SepTxt & Right(Cells(R, C), Len(Cells(R, 56)) - T + 2)
Exit For
End Select
Next
Next
End Sub
Non elegantissimo ma ci sono pochi nomi alla volta da scorrere (max 30) per cui è abbastanza soddisfacente. Sempre pronto a sistemare se qualcuno ha un'idea migliore. Lo posto nel caso possa servire a qualcuno.
Ciao
Prova col codice appresso. La macro si ferma quando incontra la prima lettera minuscola
Sub prova() For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To Len(Cells(i, 1)) If Asc(Mid(Cells(i, 1), j, 1)) > 90 Then Stop Next j Next i End Sub
Vedi se va bene così.
Ciao,
Mario
Testato, funziona e molto meglio del mio dato che non devo anche scartare spazi o altri caratteri fuorvianti. A rilevare il minuscolo tramite Ascii non ci avrei mai pensato! Grazie grazie. 👍
Grazie di cosa? Se non ci si aiuta tra di noi ....
Sono veramente lieto di esserti stato d'aiuto.
Alla prossima. Ciao,
Mario