Usare Find per trovare colonna
Hai un problema con Excel? 
Usare Find per trovare colonna?
di Luca.Donati data: 28/03/2014 14:26:31
Ciao a tutti.
Sto tentando di farmi una Function che possa dirmi in che colonna si trova una determinata stringa, in modo da poterla poi usare sotto forma di variabile di tipo string. Per esempio: Cells(3, col).
Ho quindi fatto un primo codice sotto forma di Private Function TrovaColonna, che usavo sia all’interno di una macro che in una cella. Ma non funziona.
Allora, ho provato a riportare tutto in una macro rinunciando provvisoriamente alla Function, e ovviamente rendendo tutto più rigido. Ma mi fa un sacco di storie anche così e mi rimprovera di non saper fare i blocchi With: prima non voleva l’end with, adesso protesta che non gli avrei impostato la variabile?!? (Errore di run-time ‘91’).
Certo, che è un gran viziato, questo VBA!
Qualcuno mi sa spiegare perché fa i capricci?
Grazie, Luca
Private Function TrovaColonna(testoCercato As String, foglio As String) As String
'QUALCOSA NON VA nella riga annullata
Worksheets(foglio).Select
If Not Find(testoCercato) Is Nothing Then
'TrovaColonna = Find(testoCercato).Columns
Else
TrovaColonna = "boh..."
End If
End Function
Sub rigaDiOre()
'
' rigaDiOre Macro
' tratta una giornata secondo una regola
'ma non vi preoccupate per ora dello scopo finale, che non ha niente a che vedere con la ricerca di colonne…
'prima parte da mettere in constanti
Dim e1 As String, e2 As String, e3 As String 'colonne entrate
Dim u1 As String, u2 As String, u3 As String 'colonne uscite
Dim colReg As Range, cReg As String
'--------parte da sostituire con TrovaColonna
With Sheets("monitor").UsedRange
colReg = .Find("Regole", LookIn:=xlValues)
If Not colReg Is Nothing Then
cReg = colReg.Column
Else
cReg = "Non Trovato"
End If
End With
'--------fine parte da sostituire con TrovaColonna
MsgBox ("le regole stanno a colonna " & cReg)
|
di Luca.Donati data: 28/03/2014 14:30:31
Ho dimenticato di precisare che i capricci di With sono una curiosità "didattica", comunque importante per altri usi; invece, per l'utilità immediata mi sarebbe più utile arrivare a fare la Function.
grazie ancora.
di lepat (utente non iscritto) data: 28/03/2014 14:40:58
prova così
Sub rigaDiOre()
Dim colreg As Range
With Sheets("monitor").UsedRange
Set colreg = .Find("Regole", LookIn:=xlValues)
If Not colreg Is Nothing Then
cReg = colreg.Column
Else
cReg = "Non Trovato"
End If
End With
'--------fine parte da sostituire con TrovaColonna
MsgBox ("le regole stanno a colonna " & cReg)
End Sub |
Vuoi Approfondire?