Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao IL CREM,
ho uno stramaledetto file che arriva da Sap che contiene dei record così strutturati :
AAA 100
BBB 100
AAXXX 200
* tot.liv1 400
e via dicendo
Con del codice Vba dovrei trovare quelle righe che iniziano con asterisco , uso la funzione sotto riportata che mi dovrebbe restituire il numero di riga dove trova l’asterisco, nell’esempio sopra riportato il numero riga 4
Private Function pFindRowPos(sText As Variant, _
Optional SearchDirection As XlSearchDirection = xlNext, _
Optional SearchOrder As XlSearchOrder = xlByRows) As Long
Dim lResult As Long, oRg As Range
'Cambiare LookAt in xlWhole per ricerca esatta e non parziale
Set oRg = Cells.Find(What:=sText, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=SearchOrder, _
SearchDirection:=SearchDirection, _
MatchCase:=False, SearchFormat:=False)
If Not oRg Is Nothing Then lResult = oRg.Row
pFindRowPos = lResult
Set oRg = Nothing
End Function
La funzione però mi restituisce la riga 1 , anche se del carattere asterisco non c’è traccia. Anche se faccio la classica funzione Cerca dal menù excel mi prende la prima riga e se continuo si ferma in tutte le righe come se fosse presente in tutto il foglio.
Ma è un carattere speciale e va cercato in qualche altro modo ?
Grazie
Per cercare un carattere jolly, è necessario fa precedere il jolly da un carattere tilde (~). Quindi, prova qualcosa del genere:
'=========>>
Option Explicit
'--------->>
Public Sub Tester()
Dim sStr As String
sStr = "~*"
MsgBox pFindRowPos(sStr)
End Sub
'--------->>
Private Function pFindRowPos(sText As Variant, _
Optional SearchDirection As XlSearchDirection = xlNext, _
Optional SearchOrder As XlSearchOrder = xlByRows) As Long
Dim lResult As Long, oRg As Range
'Cambiare LookAt in xlWhole per ricerca esatta e non parziale
Set oRg = Cells.Find(What:=sText, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=SearchOrder, _
SearchDirection:=SearchDirection, _
MatchCase:=False, SearchFormat:=False)
If Not oRg Is Nothing Then lResult = oRg.Row
pFindRowPos = lResult
Set oRg = Nothing
End Function
'<<=========
===
Regards,
Norman