Il 02/08/2012 13:51, [email protected] ha scritto:
Salve a tutti

Quesito:
Ho un ods diviso così: il primo foglio è un form da compilare, i dati inseriti
nel primo foglio vengono automaticamente copiati e formattati negli altri 4
(che sono delle copie identiche) seguenti che poi andranno in stampa.
Nella cella-form "indirizzo" capita spesso di dover mettere nomi come Clemente
IX o Pio VII o Gregorio XVIII
Nelle celle corrispondenti, dato il Maiusc.Iniz viene fuori una cosa tipo "Via
Clemente Ix" o "Via Pio Vii" o "via Gregorio Xviii" che fa alquanto schifo. Ora
vado a mano nel primo foglio a stampa, tolgo la protezione contro le modifiche,
e scrivo l'indirizzo sovrascrivendo la formula e poi riproteggo in modo che
anche gli altri 3 fogli-copia sian corretti; lungo e noioso...
Ho provato con "stringa.estrai" e con "Destra" ma ottengo dei risultati di
difficilissima lavorazione dato che il numero 3 sono tre caratteri (III) mentre
il 5 è un carattere solo (V) e il 18 sono cinque caratteri (XVIII) e sia
"stringa" che "destra" prevedono un numero definito di caratteri da trattare
quindi dovrei prima estrarli, poi scremarli dato che se definisco a priori
"destra,5" poi in "via Clemente IX" mi trovo come risultato "te IX"... o in
"Pio V" l'intero indirizzo...
La cosa che mi viene in mente è spezzare l'indirizzo in parte Nome e parte
Numero usando i numeri arabi per permettere a OOo un veloce Riconoscimento e
poi con "romano" concatenarli correttamente nei fogli stampa. Ma separare il
contenuto della cella in altre due cun una per la parte nome e una per la parte
numero non è nelle mie conoscenze.
Come posso risolvere?

Credo che una funzione personalizzata di questo tipo ti possa aiutare a risolvere il problema.

Function Romano(a as String) as String
dim v as variant

    Romano=""
    v=split(a, " ")
    for i = 0 to ubound(v)
if ucase(left(v(i),1)="V") OR ucase(left(v(i),1)="I") OR ucase(left(v(i),1)="X") then if ucase(mid(v(i),2,1))="I" OR ucase(mid(v(i),2,1))="V" OR ucase(mid(v(i),2,1))="X" then
                Romano=ucase(v(i))
            end if
        end if
    next i
End Function


la funzione data una stringa estrapola qualunque sia la posizione la sottostringa con i numeri romani (almeno quelli che presentano combinazioni con I, V e X).

Per inserirla dovresti andare un Strumenti->Macro->Organizza Macro->Visual Basic poi dalla schermata selezioni l'ultima voce (il nome del tuo ods) e fai aggiungi se non c'è un modulo (chiamalo Main) se invece c'è Main selezionalo e premi Modifica.

Quindi copiaincolla questo codice.

Per richimarla su una cella digita =Romano(A1) dove A1 è il riferimento della cella con la stringa da riconoscere e buon divertimento.

Ciao

--
Francesco De Marchi aka Cix
VELug Venezia Free Software User Group

---------------------------------------------------------------------
Per cancellarsi: [email protected]
Per informazioni: http://www.openoffice.org/it/
Per avviare una nuova discussione: [email protected]
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it

Rispondere a