creare una macro

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
maresama
Messaggi: 9
Iscritto il: domenica 6 luglio 2014, 9:07

creare una macro

Messaggio da maresama »

Da qualche anno (con open office) non ho più creato una macro
Ora ho provato a farne una ma non mi funziona
Devo fare questo: spostare una colonna (già selezionata) davanti alla colonna precedente. da: aa bb CC dd a: aa CC bb dd
faccio cosi:
- seleziono una colonna
- registra macro
- ctrl + C
- foglio - elimina colonna
- con il mouse mi sposto di una colonna a sinistra
- foglio - inserisci colonna a sinistra
- ctrl + V
- termina
- sovrascrivo macro vecchia ( che comunque non andava)

provo:
- seleziono una colonna
- macro - esegui .- cerco ed eseguo la macro
non funziona (deseleziona solo la colonna e si sposta il cursore sulla colonna precedente)

Come devo fare? Dove sbaglio? (naturalmente quello che ho fatto a mano è corretto)

nb: non esiste la possibilità di eseguire una macro passo per passo per vedere dove è l'errore?

grazie per un aiuto
libre office 3.5 Mint Maya 13
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: creare una macro

Messaggio da patel »

premesso che il registratore non sempre funziona non fare la selezione prima, per prima cosa attiva il registratore e poi fai le varie operazioni.
Per controllare step by step lancia la macro con F8
-------------------
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
maresama
Messaggi: 9
Iscritto il: domenica 6 luglio 2014, 9:07

Re: creare una macro

Messaggio da maresama »

Ma se seleziono dopo l'inizio registrazione, la macro userà sempre quella colonna, mentre per me la colonna varia di volta in volta
Non ho capito come usare F8
Per provare la macro faccio 'strumenti > macro > esegui > seleziona la macro > esegui (se qui uso F8 non fa niente)
Forse devo fare diversamente?
grazie
libre office 3.5 Mint Maya 13
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: creare una macro

Messaggio da patel »

Per usare F8 non devi fare Esegui, ma Organizza Macro.
Come ti ho detto il Registratore ha grossi limiti,in questo caso non capisce che deve lavorare sulla selezione, conviene imparare ad usare il linguaggio Basic (completamente diverso da quello del registratore)
Un buon testo con esempi lo trovi qui http://www.pitonyak.org/oo.php
Nel caso specifico la macro che ti serve non è banale:

Codice: Seleziona tutto

Sub scambiaColonneBC
doc=thiscomponent
Sh = Doc.Sheets(0)
c = Sh.createCursor
c.gotoEndOfUsedArea(false)
UltimaRiga = c.RangeAddress.EndRow + 1
'---- inserisci colonna B
oRangeAddress = Sh.getCellRangeByName("B1").getRangeAddress()
Sh.insertCells(oRangeAddress, com.sun.star.sheet.CellInsertMode.COLUMNS)
'.... copia D in B --------
oRange = Sh.getCellRangeByName("D1:D" & UltimaRiga)
Doc.CurrentController.select(oRange)
o = Doc.CurrentController.getTransferable()
oRange = Sh.getCellRangeByName("B1")
Doc.CurrentController.select(oRange)
Doc.CurrentController.insertTransferable(o)
'------- elimina D ----
Sh.Columns.removeByIndex(3, 1)
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
Rispondi