[Risolto] Passare cella come argomento di funzione

Creare una macro - Scrivere uno script - Usare le API
Rispondi
RBendo
Messaggi: 71
Iscritto il: sabato 31 agosto 2013, 16:45

[Risolto] Passare cella come argomento di funzione

Messaggio da RBendo »

Vorrei scrivere una macro che accetti una cella come parametro, se indico il parametro come integer o string, mi dà tipo di dati non ammesso, se lo dichiaro come object, mi dà variabile non impostata, qualcuno può aiutarmi?
Ultima modifica di charlie il domenica 23 marzo 2014, 14:41, modificato 2 volte in totale.
Motivazione: Aggiunto segno di spunta verde
OpenOffice 4.0.1 su WINDOWS 8
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Passare cella come argomento di funzione

Messaggio da Gaetanopr »

Allega la macro e se possibile, sarebbe meglio, il file spiegando quello che vuoi ottenere
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
RBendo
Messaggi: 71
Iscritto il: sabato 31 agosto 2013, 16:45

Re: Passare cella come argomento di funzione

Messaggio da RBendo »

Scusa ma ci sono parecchi dati personali, mi ci vorrebbe troppo tempo per preparare il file.
Semplicemente vorrei scrivere una, macro che accetti come argomento l'indirizzo di una cella, come si fa normalmente quando si scrive una formula nelle celle del foglio di calcolo, cioè si passa come argomento A1 oppure D3, eccetera. Ho scritto una macro dichiarandola come segue

Function macro ( i As Integer )
....
End Function

Se passo la cella in questa forma, tipo

=macro(A1)

mi dà errore: tipo di dati errato

Nell'altra forma

Function macro ( i As Object )
...
End Function

mi dà errore: variabile non impostata.

In entrambi i casi la riga di errore viene indicata sull'intestazione dichiarativa della funzione.
OpenOffice 4.0.1 su WINDOWS 8
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Passare cella come argomento di funzione

Messaggio da Gaetanopr »

Puoi fare in diversi modi, dipende da come poi lavori il parametro, ad esempio puoi passare una cella o gruppo di celle come stringhe
ES: "A1" "A1:A10"
Oppure, almeno io faccio così nelle mie funzioni personalizzate, passo degli oggetti e tramite il metodo getdataarray scorro i vari elementi(celle), puoi passare direttamente un array bidimensionale, ma se non alleghi un valido esempio le risposte saranno solo vaghe.
In fondo a questo post viewtopic.php?f=2&t=5247, ho creato una funzione personalizzata dove viene passato un argomento "Indirizzo" che può essere una singola cella o un gruppo di celle monocolonna(nell'esempio) e ne calcola la "MODA", magari può esserti utile.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Passare cella come argomento di funzione

Messaggio da patel »

puoi passare anche un foglio o una colonna intera, vedi questo esempio per trovare la prima riga vuota in una colonna

Codice: Seleziona tutto

sub prova
  Sheet = ThisComponent.getSheets().getByIndex(0)
  Col = Sheet.getColumns().getByIndex(2)   ' colonna C
  print  CercaPrimaVuota(Sheet, col)
end sub

Function CercaPrimaVuota(Foglio, colonna)
  RangeVuoto = colonna.queryEmptyCells.RangeAddresses
  CercaPrimaVuota = RangeVuoto(0).StartRow + 1
End Function
-------------------
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
RBendo
Messaggi: 71
Iscritto il: sabato 31 agosto 2013, 16:45

Re: Passare cella come argomento di funzione

Messaggio da RBendo »

Mi scuso se non ho risposto, la macro in questione non mi accettava il parametro perché gli passavo come argomento un valore data, mentre il parametro era divchiarato come integer, poi ho scoperto che bastava dichiarare l'argomento come long. Tutto a posto.
OpenOffice 4.0.1 su WINDOWS 8
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Passare cella come argomento di funzione

Messaggio da Gaetanopr »

La tua risposta può tornare utile a qualche altro utente, ecco perchè è importante dare riscontro specialmente quando si trova la soluzione.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Rispondi