[Risolto] macro per inserire una nuova riga dati

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
oigres
Messaggi: 108
Iscritto il: mercoledì 5 maggio 2010, 17:17

[Risolto] macro per inserire una nuova riga dati

Messaggio da oigres »

Ciao a tutti

sto cercando di elaborare un foglio per gestire il budget familiare.
mi servirebbe creare una macro che mi consenta tramite pulsante di inserire una nuova riga in un elenco e che contemporaneamente mi spostasse quelle esistenti più in basso
per spiegarmi meglio allego un file di prova
in pratica tramite il tasto "inserisci" vorrei inserire una nuova riga (la 75), spostare quindi quelle esistenti già completate più in basso e posizionare il cursore in B75 per un nuovo inserimento dati.
Spero di essere stato chiaro

grazie in anticipo a chi vorrà aiutarmi

ciao
sergio
Allegati
prova.ods
(20.74 KiB) Scaricato 418 volte
Ultima modifica di oigres il lunedì 9 novembre 2015, 9:13, modificato 1 volta in totale.
LibreOffice 4.3.6.2 / windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per inserire una nuova riga dati

Messaggio da patel »

Codice: Seleziona tutto

Sub inseriscirigA
oSheet = ThisComponent.Sheets(0)
oRangeAddress = oSheet.getCellRangeByName("A75").getRangeAddress()
oSheet.insertCells(oRangeAddress, com.sun.star.sheet.CellInsertMode.ROWS)
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
oigres
Messaggi: 108
Iscritto il: mercoledì 5 maggio 2010, 17:17

Re: macro per inserire una nuova riga dati

Messaggio da oigres »

Grazie Patel

in parte funziona ma io vorrei che contemporaneamente mi spostasse il cursore nella colonna B della nuova riga inserita in modo tale da poter inserire nuovi dati.
Chiedo troppo?

ancora grazie
ciao
sergio
LibreOffice 4.3.6.2 / windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per inserire una nuova riga dati

Messaggio da patel »

hai chiesto di inserire una riga in B75, dopo che è stata inserita cosa farai ? la prossima riga sempre in B75 ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
oigres
Messaggi: 108
Iscritto il: mercoledì 5 maggio 2010, 17:17

Re: macro per inserire una nuova riga dati

Messaggio da oigres »

Sì, in pratica il cursore dovrebbe posizionarsi in B75 in modo da poter inserire nuovi dati.
E così di seguito. Quindi la riga 75 è sempre quella nuova per inserimento nuovi dati e le altre vengono di volta in volta spostate in basso.

Spero di essere stato chiaro.

Ancora grazie
Buona giornata.

Sergio
LibreOffice 4.3.6.2 / windows 7
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: macro per inserire una nuova riga dati

Messaggio da Gaetanopr »

Per posizionare il cursore nella cella B75 ti basta aggiungere questa riga di codice alla fine ma prima di End Sub della macro di patel

Codice: Seleziona tutto

 ThisComponent.CurrentController.Select(oSheet.getCellRangeByName("B75"))

Però avrai notato che nella nuova riga non è più presente il menu a tendina, se ti serve che ci sia spiega da dove deve prendere i dati perchè nell'esempio la formula è errata.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
oigres
Messaggi: 108
Iscritto il: mercoledì 5 maggio 2010, 17:17

Re: macro per inserire una nuova riga dati

Messaggio da oigres »

ciao gaetanopr,
grazie anche a te per l'aiuto.
ho aggiunto la riga di codice che hai suggerito ma la macro pur funzionando, mi mi da errore e dice "Errore di runtime BASIC. Variabile dell'oggetto non impostata"

per quanto riguarda il menù a tendina,che ovviamente serve che rimanga, i dati li deve prendere dalle celle c10:C14

ancora grazie
buon pomeriggio
sergio
LibreOffice 4.3.6.2 / windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per inserire una nuova riga dati

Messaggio da patel »

Codice: Seleziona tutto

Sub inseriscirighe
Dim oSheet, oRangeAddress
Doc=ThisComponent
oSheet = Doc.Sheets(0)
oRangeAddress = oSheet.getCellRangeByName("A75").getRangeAddress()
oSheet.insertCells(oRangeAddress, com.sun.star.sheet.CellInsertMode.ROWS)
Range = oSheet.getCellRangeByName("F74").getRangeAddress()
CellAddress  = oSheet.getCellRangeByName("F75").getCellAddress()  
oSheet.copyRange(CellAddress, Range)
Doc.CurrentController.Select(oSheet.getCellRangeByName("B75"))
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
oigres
Messaggi: 108
Iscritto il: mercoledì 5 maggio 2010, 17:17

Re: macro per inserire una nuova riga dati

Messaggio da oigres »

grazie patel,
sembra che la tua macro funzioni!
unica cosa la macro funziona se il foglio con la tabella e il pulsante con la macro relativa è al primo posto di una serie di fogli. Se è preceduto da altri fogli la macro aggiunge la riga 75 al primo foglio .... misteri
comunque non è un grosso problema.

buona serata e buona domenica
LibreOffice 4.3.6.2 / windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per inserire una nuova riga dati

Messaggio da patel »

non è un mistero, la riga

Codice: Seleziona tutto

oSheet = Doc.Sheets(0)
indica che il foglio su cui la macro lavora è il Foglio1, se invece fosse il foglio 4 dovresti scrivere

Codice: Seleziona tutto

oSheet = Doc.Sheets(3)
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
oigres
Messaggi: 108
Iscritto il: mercoledì 5 maggio 2010, 17:17

Re: macro per inserire una nuova riga dati

Messaggio da oigres »

perfetto.
ancora grazie mille!
buona giornata
LibreOffice 4.3.6.2 / windows 7
Rispondi