Ingegneria Forum
Ingegneria Edile, Strutturale & Geotecnica => .:C#, Excel, VB e Programmazione:. => Topic started by: minis on 01 October , 2012, 09:54:57 AM
-
Salve da internet ho trovato questa macro per l'automazione della ricerca valore di destinazione, ma stampa a video il valore ricercato mentre io vorrei che fosse scritto in una specifica cella, modificando il valore che è già presente in quella cella (es. in cella P63), non conoscendo nulla di programmazione LibreOffice basic, volevo avere indicazione su come modificare la macro per ottenere il risultato richiesto inserisco di seguito la macro
sub MP
dim resultfound as new com.sun.star.sheet.GoalResult '(divergence,result structure)
dim formula_address as new com.sun.star.table.CellAddress '(sheet,column, Row structure)
dim variable_address as new com.sun.star.table.CellAddress
dim targetresult as string 'goal value sought as STRING
oDoc=thiscomponent
'set location of formula to be evaluated to give goal value
formula_address.sheet = 1 'index values - zero based
formula_address.Column = 1
formula_address.Row=47
' set location of variable to be changed
variable_address.sheet = 0
variable_address.Column = 15
variable_address.Row=62
' set goal value
targetresult = "0"
' run goalseek
resultfound = oDoc.seekgoal(formula_address,variable_address,targetresult)
' do something with result
msgbox resultfound.result
end sub
fa vedere a video ma vorrei che scrivesse il risultato nella cella P63 foglio 1
chiedo a voi che avete maggiore conoscenza di me di liguaggi di programmazione come risolvere il problema.
Grazie anticipate a tutti
-
Se la della é ha una riga x e colonna y e vuoi che scriva il valore z scriverai
Cell(x,y) = z
-
ho provato ad inserire il comando cell (x,y) come da te indicato ma non funziona mi dice procedura non definita, come detto non sono affatto pratico di programmazione se magari si potrebbe inserire le righe da scrivere nella macro sopra rappresentata sarebbe meglio
il risultato viene visualizzato con il comando msbox resultfoud.result e vorrei che questo risultato invece di esser visibile solo a video venga scritto scritto nella cella P63 del primo foglio
grazie di nuovo
-
infatti ho sbagliato io, devi usare il comando cells, non cell
http://excelvba.altervista.org/Corso/OggettiExc2.html (http://excelvba.altervista.org/Corso/OggettiExc2.html)
-
grazie ancora ma non sono riuscito ad implementare la funzione continua restituirmi il comando funzione non definita, non so se è un problema di libreoffice o del comando perchè non compatibile.
se hai un attimo di tempo potresti provare a modificare e far girare la macro indicata (serve naturalmente una funzione di cui ricercare il valore)
grazie di nuovo
-
risolto i comandi sono differenti invio l'intero listato della macro per libreoffice
sub MP
dim resultfound as new com.sun.star.sheet.GoalResult '(divergence,result structure)
dim formula_address as new com.sun.star.table.CellAddress '(sheet,column, Row structure)
dim variable_address as new com.sun.star.table.CellAddress
dim targetresult as string 'goal value sought as STRING
oDoc=thiscomponent
'set location of formula to be evaluated to give goal value
formula_address.sheet = 1 'index values - zero based
formula_address.Column = 1
formula_address.Row=47
' set location of variable to be changed
variable_address.sheet = 0
variable_address.Column = 15
variable_address.Row=62
' set goal value
targetresult = "0"
' run goalseek
resultfound = oDoc.seekgoal(formula_address,variable_address,targetresult)
' copia nella cella
oDoc.Sheets(0).getCellRangeByName("P63").FormulaLocal= resultfound.result
' per avere messaggio a video
msgbox resultfound.result
end sub
naturalmente vanno modificati i valori del foglio e delle righe e colonne relative alle celle
grazie comunque