Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Public Function fCerca(ByVal rng As Variant, ByVal Comune As String) As String
<cut>
Mauro ... questa poi da te non me la sarei mai aspettata. :)
Andrea.
Ho fatto e farò di peggio. E sono contento di non essere infallibile, quelle persone lì mi fanno paura. Come i fenomeni.
Ho adattato la Sub in Function lasciando cose inutili, eccola pulita:
Public Function fCerca(ByVal Comune As String) As String
Dim lMax As Long
Dim lMin As Long
Dim lng As Long
lMin = 2
lMax = 14482
Do While lMin <= lMax
lng = (lMin + lMax) / 2
If UCase(Cells(lng, 1).Value) = UCase(Comune) Then
fCerca = "Comune: " & Cells(lng, 1).Value _
& "-" & "Cap: " & Cells(lng, 2).Value _
& "-" & "Provincia: " & Cells(lng, 3).Value
Exit Function
ElseIf Cells(lng, 1).Value < UCase(Comune) Then
lMin = lng + 1
Else
lMax = lng - 1
End If
Loop
End Function
Se non lo utilizzi dallo stesso foglio:
Public Function fCerca(ByVal Foglio As String, ByVal Comune As String) As String
Dim lMax As Long
Dim lMin As Long
Dim lng As Long
Dim sh As Worksheet
lMin = 2
lMax = 14482
Set sh = ThisWorkbook.Worksheets(Foglio)
With sh
Do While lMin <= lMax
lng = (lMin + lMax) / 2
If UCase(.Cells(lng, 1).Value) = UCase(Comune) Then
fCerca = "Comune: " & .Cells(lng, 1).Value _
& "-" & "Cap: " & .Cells(lng, 2).Value _
& "-" & "Provincia: " & .Cells(lng, 3).Value
Exit Function
ElseIf .Cells(lng, 1).Value < UCase(Comune) Then
lMin = lng + 1
Else
lMax = lng - 1
End If
Loop
End With
End Function
e varianti....