Alle 19:05, venerdì 09 giugno 2006, [EMAIL PROTECTED] ha scritto: > Ma non si poteva fare una cosa piu' semplice del tipo "blocca riga > evidenziata ecc.) anche per i comuni mortali che non sanno scrivere una > macro? > dove? riguardo cosa? rispondendo così, "top quoting" direbbe qualcuno, è difficile capire a cosa ti riferisci.
http://wiki.news.nic.it/QuotarBene > ----- Original Message ----- > From: "Bart Aimar" <[EMAIL PROTECTED]> > To: <[email protected]> > Sent: Friday, June 09, 2006 7:00 PM > Subject: Re: [utenti] calc: 1 .ods, 2 tabelle, stessi dati, ordinati > diversamente > > > Valerio Felici ha scritto: > >> Alle 01:17, venerdì 09 giugno 2006, Bart Aimar ha scritto: > >> > >> discutiamola un po'.... > > > > Bene! > > > >>> Sub Duplica_Sheet1 ' duplica un foglio e aggiunge un suffisso al > >>> nome dim iNumInser as integer oDoc = thisComponent sNomeSheet = > >>> oDoc.currentcontroller.activesheet.name oSheet = > >>> oDoc.currentcontroller.activesheet ''' Copy_PageStyle print_area= > >>> oSheet.getPrintAreas ' registro l'area di stampa > >> > >> 2.qui sopra: è necessario anche se si ricopia tutto il foglio? > > > > Io ho copiato del codice che utilizzo per funzioni più complesse... > > quindi può avere cose che non ti servono. > > Ma intendi avere una sheet identica all'originale si! > > Lo stile di pagina invece se lo tira dietro, ma la mia funzione > > originale copiava anche fuori dal documento. > > > >>> RepeatRows = oSheet.getTitleRows 'registro le righe da ripetere > >>> (intestazione colonna) > >> > >> 3. qui sopra: posso decidere quante righe costituiscono > >> l'intestazione? potrei mettere una setTitleRows? > > > > La riga sopra (come dice il commento) registra il numero di righe > > impostato nella sheet di origine... > > Più sotto poi utilizza il valore di questa variabile per impostare lo > > stesso numero di righe sulla sheet duplicata. Ma se vuoi puoi > > impostarne uno diverso. > > > >>> PrintRepeatRows = oSheet.PrintTitleRows ' i parametri "optional" > >>> devono essere verificati nell'ordine ' in cui vengono passati!! > >> > >> ??? > > > > Il commento è riferito alle righe dopo... > > > > >> if isMissing (sSuffix) Then sSuffix = "_print" else sSuffix = > >>> > >>> "_copia" end if sRaggrup = sNomeSheet & sSuffix If > >>> thisComponent.Sheets.hasByName(sNomeSheet & sSuffix) Then If > >>> thisComponent.Sheets.hasByName(_ sNomeSheet & sSuffix & "_bk") Then > >>> thisComponent.Sheets.removebyname(_ sNomeSheet & sSuffix & "_bk") > >>> end if oSheet = oDoc.Sheets.getByName(sNomeSheet & sSuffix) > >>> oSheet.Name = sNomeSheet & sSuffix & "_bk" end if > > > > Questo ambaradan è inutilmente complesso per questo uso... > > In realtà la sub originale poteva venir chiamata da situazioni > > diverse, e le diverse situazioni potevano passare o meno dei > > parametri... che - appunto - avevo constatato che andavano verificati > > nell'ordine... Nel nostro caso il commento è superfluo... e avrei > > dovuto eliminarlo. Forse c'è altro di superfluo... ma francamento in > > quel casino non tempo ne voglia di ributtarmi in quel casino... > > comunque funziona! :-) > > > >> passiamo alla prossima :-) > >> > >>> Function Riordina_A (_ ColRior as integer, AscDesc as boolean)as > >>> variant ' Riordina l'elenco prezzi con criteri ' a scelta... > >> > >> 4. è possibile impostare più criteri di ordinamento? tipo la > >> finestra di dialogo: per col. C, quindi per col. D....? > > > > Non saprei... non ho mai provato... ma era passato qualcosa in > > lista... ma non ricordo... so che avevo dato un consiglio stupido e > > mi avevano subito smentito... > > > > Forse qualcuno può aiutarci? > > > >>> oLastCell = getLastUsedCell(oSheet) lcolEnd = oLastCell.Endcolumn > >>> lrowEnd = oLastCell.EndRow oMioRange = > >>> osheet.getCellRangeByPosition(0,1,lcolEnd,lrowEnd) > >> > >> 5. in fondo alla tabella ci sono commenti e schifezze varie, c'è un > >> modo per determinare, anche interattivamente, il range di > >> righe/colonne da riordinare? > > > > Hai, hai... vedo che non era solo un mio problema... :-) > > > > In UltimusFree avevo risolto mettendo un "segno", ovvero una riga di > > chiusura "che non deve essere camcellata mai!!!" > > In questa riga un testo "sempre_quello" nell'angolo in basso a > > sinistra dell'area da riordinare; la macro ricerca il testo e così > > individua l'area. > > > > Non è molto elegante... e quella riga continuo a viverla con profonda > > schizofrenia ... > > Si tratta di una riga rosso fuoco piene di scritte minatorie che > > promettono fulmini divini a chi la cancella... poi via macro a volte > > la nascondo... (per evitare che qualcuno la stampi)... poveri > > utenti! > > > > E pensare che ho lavorato un po' per togliere quel codice e > > sostituirlo con getLastUsedCell... :-) > > > > Comunque se ci sono idee migliori sono pronto alla modifica! > > > >>> Riordina_A = lrowF > >> > >> questa non l'ho capita: lrowF che valore dovrebbe avere? e che modo > >> è di usare una funzione a sinistra dell'operatore di assegnazione? > > > > Altro frammento di codice che non serve e confonde... :-) > > > > Come avrai notato Riordina_A è una Function (non una sub) > > > > La Function ha la caratteristica di restituire un valore, stivandolo > > in una variabile con il nome stesso della function. > > > > Pertanto, se dalla sub Main avessi scritto > > > > lrowFinale = Riordina_A (2, true) > > > > oltre ad eseguire il codice a valle la sub chiamante veniva informata > > del valore della riga finale... > > Ma nel nostro caso non serve! > > > > Intendo dire che se vuoi che un modulo restituisca qualcosa devi > > usare una Function, > > impostrare una variabile = nome_function, > > e all'interno della function impostare il > > nome_function = valore_elaborato > > > >>> Function getLastUsedCell(oSheet as Object) Dim oCell As Object Dim > >>> ... zot... > >> > >> ok, questa è funzionale ad una delle precedenti > > > > Sempre che non ci siano i soliti, immancabili commenti a fine > > tabella... > > > > :-) > > > > Comunque complimenti... vedo che sei riuscito a smontare il codice > > riga per riga! > > > > > > ciao Bart > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] -- A presto -Valerio- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
