Funzione personalizzata accessibile su ogni Excel
Hai un problema con Excel? 
Funzione personalizzata accessibile su ogni Excel
di fiocco87 data: 15/10/2015 10:15:58
Ciao a tutti!
Ho da poco iniziato a smanettare con Macro e VBA, quindi scusatemi se farò domande sciocche/banali ;)
Allora, il mio problema è il seguente:
ho necessità di usare una formula che mi estragga solo i numeri da una cella (Es: "123 trs + 78ggt" ---> ottengo "123 78")
Ora, visto che non c'è nulla del genere nativo su xls, ho pensato di crearmi qualcosa io con VBA, e spulciando su internet ho tirato fuori quello che ho messo qui sotto. In teoria la formula fa quel che deve fare (smentitemi pure al riguardo eh..) quindi da questo punto dovrei essere ok.
Il problema sorge quando io vorrei poter usare questa formula in ogni file excel del mio PC, tuttavia se la salvo in un modulo di un file specifico, la formula è disponibile solo per quel file;
mi aspettavo che salvandola in un modulo del personal il problema si risolvesse, ma invece no (o comunque sbaglio io qualcosa), perchè salvandola nel personal se apro un qualsiasi file xls non mi riconosce la formula (esce #NOME? come errore).
In alternativa a me andrebbe bene anche inserire questo codice in una macro, per poi fargli usare direttamente la formula.
Però di nuovo, non so come si faccia
Potreste aiutarmi?
grazie mille!
Function OnlyNumber(c As String) As String
Dim i As Integer
For i = 1 To Len(c)
If IsNumeric(Mid(c, i, 1)) Then
s = s & Val(Mid(c, i, 1))
Else
If Right(s, 1) <> " " And Len(s) > 0 Then s = s & " "
End If
Next
onlyNumber = s
End Function |
di alfrimpa data: 15/10/2015 11:47:27
Ciao Fiocco
Cerca con Google "Excel vba function in personal.xlsb"
Il primo link (Ron de Bruin) mi sembra piuttosto completo (è in inglese ma puoi tradurlo sempre con Google).
Una volta che la funzione sarà stata inserita nel file personal.xlsb sul foglio di lavoro, se si vuole valutare la cella A1, dovrai scrivere:
=Personal.xlsb!OnlyNumber(A1)
Alfredo
di fiocco87 data: 15/10/2015 12:20:40
ok, ho provato a fare come descritto, ma continuo a ricevere errore.
Ho modificato il codice inserendo "Public function" invece di soltanto "Function"
quando vado a scrivere la formula uso il riferimento al PERSONAL (=Personal.xlsb!OnlyNumber(A1) )
ma nada, mi continua a dare lo stesso errore #NOME?
cos'è che sbaglio?
di fiocco87 data: 15/10/2015 12:29:53
ok a quanto pare ho risolto..
il problema era dovuto al fatto che avevo rinominato il modulo con il nome della formula.
L'ho rinominato "Modulo1" e parrebbe funzionare tutto bene!
di alfrimpa data: 15/10/2015 12:33:24
Ciao Fiocco
Non basta mettere "Public" ma bisogna creare il file personal.xlsb e probabilmente tu non l'hai fatto.
Per poterlo fare:
1) Attiva il registratore macro e nella finestra "Registra macro" dove dice "Memorizza in" scegli "Cartella macro personale"
2) Dopo aver concluso la registrazione della macro dovresti aver creato il file personal.xlsb che si trova in una directory denominata XLSTART.
3) Da Windows cerca il file personal.xlsb ed aprilo.
4) Vai nell'editor di VBA con ALT+F11
5) Nella finestra in alto a sinistra fai doppio clic su "moduli" e doppio clic su "modulo1"
6) Nella finestra a destra troverai la macro che hai registrato prima (che puoi anche cancellare tanto non ti serve) e copiare/incollare la function
7) Salva e chiudi
Apri una nuova cartella di lavoro ed in A1 scrivi il dato da valutare ed in B1
=Personal.xlsb!OnlyNumber(A1)
Personalmente non l'ho mai fatto ma questo è quello che so.
Alfredo
di fiocco87 data: 15/10/2015 12:50:43
no no, il file PERSONAL ce l'ho, grazie ;)
Comunque adesso pare funzioni!
Adesso lo step successivo è inserire la formula nella macro, ma in teoria dovrebbe essere facile (sperem.. )
Vuoi Approfondire?