[Risolto] Inserire un "Campo di testo" in CALC da macro
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
[Risolto] Inserire un "Campo di testo" in CALC da macro
Salve, di nuovo qui ad elemosinare un possibile prezioso aiuto.
Allego un file di esempio e spiego cosa vorrei ottenere:
in un foglio calc ho una cella con un valore (ad esempio 10) ed una seconda cella con un valore di controllo (inizialmente 0).
Se il valore di controllo passa da zero ad uno (ipotesi) vorrei poter aggiungere sul foglio di calc, nella zona della prima cella, un "campo di testo" (come quello che si ottiene dal menù inserisci --> Campo di testo) con un altro valore. Non riesco a trovare nulla in rete, forse anche perchè si fa facilmente confusione tra il campo di testo di cui sopra e il text field ottenibile ad esempio con MsgBox oppure con quelli che si inseriscono in una finestra di dialogo. Quindi ho difficoltà ad effettuare la ricerca.
C'è modo di fare questa cosa?
Nel file di esempio il campo di testo è evidenziato in giallo
Allego un file di esempio e spiego cosa vorrei ottenere:
in un foglio calc ho una cella con un valore (ad esempio 10) ed una seconda cella con un valore di controllo (inizialmente 0).
Se il valore di controllo passa da zero ad uno (ipotesi) vorrei poter aggiungere sul foglio di calc, nella zona della prima cella, un "campo di testo" (come quello che si ottiene dal menù inserisci --> Campo di testo) con un altro valore. Non riesco a trovare nulla in rete, forse anche perchè si fa facilmente confusione tra il campo di testo di cui sopra e il text field ottenibile ad esempio con MsgBox oppure con quelli che si inseriscono in una finestra di dialogo. Quindi ho difficoltà ad effettuare la ricerca.
C'è modo di fare questa cosa?
Nel file di esempio il campo di testo è evidenziato in giallo
- Allegati
-
- CampoTesto.ods
- (8.96 KiB) Scaricato 284 volte
Ultima modifica di Mr.Crocodile il giovedì 21 maggio 2015, 17:07, modificato 1 volta in totale.
Andrea
Re: Inserire un "Campo di testo" in un foglio di calc da mac
Dovresti dare più informazioni, ad esempio come dovrebbe avviarsi la macro??? ad ogni variazione della cella di confronto o solo alla prima volta che diventa diversa da zero, può avere solo valori 0-1 ?? funziona solo per una cella?? se il valore torna a zero il rettangolo và eliminato o no?
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: Inserire un "Campo di testo" in un foglio di calc da mac
Allora, io ho una finestra di dialogo con una serie di campi nei quali inserire alcuni dati numerici. Una volta fatto clic sul pulsante OK, secondo il verificarsi di una condizione (che per ipotesi avevo posto pari ad 1) ma che in realtà dipenderà dai dati numerici inseriti nella finestra, vorrei poter far comparire il Campo di Testo. Non sono riuscito a capire se e quanto complessa sia questa cosa.
Per semplificare la richiesta avevo pensato di far coincidere la condizione con un valore da mettere in una cella con un qualunque sistema (anche a mano) e quindi poi creare nella macro un controllo. Quello che mi manca è come fare la chiamata per far comparire il campo, ammesso che esista il modo per come lo immagino.
Ho il dubbio di non essere stato troppo chiaro. Fammi sapere che in caso provo a descrivere in altro modo.
Ciao Grazie per ora
PS: in effetti all'avvio della macro nel momento di richiedere la compilazione dei campi della finestra, il riquadro dovrebbe scomparire (qualora fosse presente) in quanto non è detto che la compilazione dei campi faccia scattare la condizione
Per semplificare la richiesta avevo pensato di far coincidere la condizione con un valore da mettere in una cella con un qualunque sistema (anche a mano) e quindi poi creare nella macro un controllo. Quello che mi manca è come fare la chiamata per far comparire il campo, ammesso che esista il modo per come lo immagino.
Ho il dubbio di non essere stato troppo chiaro. Fammi sapere che in caso provo a descrivere in altro modo.
Ciao Grazie per ora
PS: in effetti all'avvio della macro nel momento di richiedere la compilazione dei campi della finestra, il riquadro dovrebbe scomparire (qualora fosse presente) in quanto non è detto che la compilazione dei campi faccia scattare la condizione
Andrea
Re: Inserire un "Campo di testo" in un foglio di calc da mac
Ti allego un esempio, avviando la macro viene eliminato se presente lo shape dalla cella B10, poi viene verificato la cella B15, se il valore è pari ad uno viene creato nuovamente lo shape nella cella B10.
- Allegati
-
- Shape_Rettangolo.ods
- (9.72 KiB) Scaricato 302 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: Inserire un "Campo di testo" in un foglio di calc da mac
Perfetto come sempre grazie. Sto smanettando i parametri per ottenere posizione e forma desiderata.
Andrea
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: [Risolto] Inserire un "Campo di testo" in CALC da macro
Gaetano ho riscontrato un piccolo problema durante la messa a punto del codice che mi hai gentilmente fornito.
Cerco di spiegare allegando un file di esempio.
Come si vede sono presenti 3 caselle di testo con testo in rosso (179, 173, 3).
Le caselle di testo si presentano solo se ci sono delle variazioni nei dati iniziali. In questo caso ce ne sono state 3 ma potrebbero essercene solo due, solo una o nessuna e di conseguenza le caselle sarebbero 2, 1 o nessuna.
Ho separato le due parti del codice perché la parte che si occupa di cancellare mi serve all'inizio del lavoro in quanto la tabella che vedi viene ripulita prima di effettuare un nuovo calcolo. Mentre la parte che genera le eventuali caselle agisce in un momento diverso.
Non ho avuto problemi a fare ciò ma mi sono accorto di una cosa: se le caselle non sono presenti (oppure se la macro principale viene interrotta dall'utente per altri motivi e rieseguita di nuovo) il codice per cancellare (presente nella sezione che si occupa di ripulire) non trovando le caselle mi cancella invece le altre parti grafiche che puoi vedere (le linee con frecce o le caselle di testo che sono in basso a destra nella tabella) come se ci fosse un'area più vasta dove va a cercare le caselle.
Ora non sono stato in grado di capire come funziona la parte relativa alla cancellazione e quindi a metterci una pezza. Per esempio perché c'è bisogno di definire una Cella ed un range visto che durante la creazione della casella di testo questo non avviene?
C'è modo di mirare la cancellazione?
Cerco di spiegare allegando un file di esempio.
Come si vede sono presenti 3 caselle di testo con testo in rosso (179, 173, 3).
Le caselle di testo si presentano solo se ci sono delle variazioni nei dati iniziali. In questo caso ce ne sono state 3 ma potrebbero essercene solo due, solo una o nessuna e di conseguenza le caselle sarebbero 2, 1 o nessuna.
Ho separato le due parti del codice perché la parte che si occupa di cancellare mi serve all'inizio del lavoro in quanto la tabella che vedi viene ripulita prima di effettuare un nuovo calcolo. Mentre la parte che genera le eventuali caselle agisce in un momento diverso.
Non ho avuto problemi a fare ciò ma mi sono accorto di una cosa: se le caselle non sono presenti (oppure se la macro principale viene interrotta dall'utente per altri motivi e rieseguita di nuovo) il codice per cancellare (presente nella sezione che si occupa di ripulire) non trovando le caselle mi cancella invece le altre parti grafiche che puoi vedere (le linee con frecce o le caselle di testo che sono in basso a destra nella tabella) come se ci fosse un'area più vasta dove va a cercare le caselle.
Ora non sono stato in grado di capire come funziona la parte relativa alla cancellazione e quindi a metterci una pezza. Per esempio perché c'è bisogno di definire una Cella ed un range visto che durante la creazione della casella di testo questo non avviene?
C'è modo di mirare la cancellazione?
- Allegati
-
- Test.ods
- (31.62 KiB) Scaricato 247 volte
Ultima modifica di Mr.Crocodile il sabato 23 maggio 2015, 9:50, modificato 1 volta in totale.
Andrea
Re: [Risolto] Inserire un "Campo di testo" in CALC da macro
Il 3 non è presente o non lo vedo io, come non sono presenti le macro d te modificate ti avevo chiesto se la creazione e cancellazione degli oggetti valeva per più celle e non mi hai risposto.Mr.Crocodile ha scritto:Come si vede sono presenti 3 caselle di testo con testo in rosso (179, 173, 3)
e invece questo avviene anche in fase di creazione.Mr.Crocodile ha scritto:Ora non sono stato in grado di capire come funziona la parte relativa alla cancellazione e quindi a metterci una pezza. Per esempio perché c'è bisogno di definire una Cella ed un range visto che durante la creazione della casella di testo questo non avviene?
Per come è impostata la macro questa non cancella altri oggetti presenti sul foglio tranne quello ancorato sulla cella B10, infatti se provi il mio file inserendo altre parti grafiche queste non vengono cancellate.
In sostanza allega la macro da te modificata
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: [Risolto] Inserire un "Campo di testo" in CALC da macro
Su un altro forum dove ogni tanto partecipo non è possibile modificare i messaggi inseriti questo ha suscitato qualche disaccordo da parte degli utenti che non possono andare a risistemare qualche errore di scrittura o di spiegazione del quesito, l'amministratore e il moderatore sono intervenuti spiegando che tale decisione è stata presa per evitare agli utenti di poter effettuare modifiche successivamente che potessero rendere incomprensibili risposte intervenute nella discussione non avendo più un nesso con i messaggi precedenti modificati
Sono pienamente d'accordo.
Ho visto che hai cambiato il file, come ripetuto diversamente, non si devono modificare i messaggi o gli allegati precedenti soprattutto NON DANDONE COMUNICAZIONE, a parte il fatto che è a discapito del richiedente in quanto rimane non visibile questa modifica, ma fa pure venir meno quanto scritto da chi risponde.
Se necessario modificare un messaggio bisogna farlo senza compromettere la comprensione delle risposte intervenute, qualche giorno fa addirittura è stato sostituito in un altro quesito interamente il messaggio iniziale con la scritta “RISOLTO”.......
Comunque la macro non è ancora presente secondo me l'hai salvata tra le macro personali e non tra le macro del documento
Sono pienamente d'accordo.
Ho visto che hai cambiato il file, come ripetuto diversamente, non si devono modificare i messaggi o gli allegati precedenti soprattutto NON DANDONE COMUNICAZIONE, a parte il fatto che è a discapito del richiedente in quanto rimane non visibile questa modifica, ma fa pure venir meno quanto scritto da chi risponde.
Se necessario modificare un messaggio bisogna farlo senza compromettere la comprensione delle risposte intervenute, qualche giorno fa addirittura è stato sostituito in un altro quesito interamente il messaggio iniziale con la scritta “RISOLTO”.......
Comunque la macro non è ancora presente secondo me l'hai salvata tra le macro personali e non tra le macro del documento
Ultima modifica di Gaetanopr il sabato 23 maggio 2015, 15:54, modificato 2 volte in totale.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: [Risolto] Inserire un "Campo di testo" in CALC da macro
Chiedo venia. Purtroppo stavo rispondendo questa mattina ed avevo modificato il file. Mentre scrivevo la risposta è andata via la corrente e sono rimasto fino ad ora senza la possibilità di completare l'opera.
Lo faccio nella risposta successiva.
La modifica con [Risolto] l'avevo messa quando ritenevo che il tuo aiuto fosse stato definitivo. Non mi ero accorto del problema durante la cancellazione. Ma credo di aver risolto definitivamente. Il codice della macro non l'ho messo di proposito perchè non ritenevo necessario per quello che avevo scritto.
Lo faccio nella risposta successiva.
La modifica con [Risolto] l'avevo messa quando ritenevo che il tuo aiuto fosse stato definitivo. Non mi ero accorto del problema durante la cancellazione. Ma credo di aver risolto definitivamente. Il codice della macro non l'ho messo di proposito perchè non ritenevo necessario per quello che avevo scritto.
Andrea
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: [Risolto] Inserire un "Campo di testo" in CALC da macro
Errore mio, ora ho corretto il file. In effetti ho spiegato un po' male quello di cui avevo bisogno. Ci riprovo per chiarezza di esposizione per chi leggerà in futuro:Gaetanopr ha scritto:Il 3 non è presente o non lo vedo io, come non sono presenti le macro d te modificate ti avevo chiesto se la creazione e cancellazione degli oggetti valeva per più celle e non mi hai risposto.
Il foglio che ho allegato è generato da una macro in base ad una serie di dati di input e, dopo una prima compilazione, potrebbe subire un affinamento. Qualora questo affinamento coinvolga le 3 celle di cui sopra, devono comparire gli eventuali 1, 2, o 3 rettangolini con il valore corretto (e le 3 celle interessate saranno sbarrate).
Ogni volta che il foglio viene generato da zero, la macro principale si occuperà di ripulire la tabella da tutti i valori e quindi anche dagli eventuali rettangolini.
Perdonami ma dal basso della mia poca esperienza mi sento comunque di contraddire quanto dici sopra per i seguenti motivi:Gaetanopr ha scritto:e invece questo avviene anche in fase di creazione.Mr.Crocodile ha scritto:Ora non sono stato in grado di capire come funziona la parte relativa alla cancellazione e quindi a metterci una pezza. Per esempio perché c'è bisogno di definire una Cella ed un range visto che durante la creazione della casella di testo questo non avviene?
Per come è impostata la macro questa non cancella altri oggetti presenti sul foglio tranne quello ancorato sulla cella B10, infatti se provi il mio file inserendo altre parti grafiche queste non vengono cancellate.
Quando i rettangoli vengono creati
Codice: Seleziona tutto
If CellaConf = 1 Then
DimForm.Width = Cella.Size.Width
DimForm.Height = Cella.Size.Height
PosForm.x = Cella.Position.X
PosForm.y = Cella.Position.Y
Drw = Sh.DrawPage
Rettangolo = Doc.createInstance("com.sun.star.drawing.RectangleShape")
Rettangolo.Size = DimForm
Drw.add(Rettangolo)
Rettangolo.Position = PosForm
Rettangolo.fillcolor = RGB(255, 255, 153)
Rettangolo.String = 11
End if
Il codice relativo alla cancellazione
Codice: Seleziona tutto
Sub Rettangolo
Dim Doc As Object
Dim Sh As Object, Drw As Object, Rettangolo As Object
Dim Larg As Long, Alt As Long
Dim DimForm As New com.sun.star.awt.Size
Dim PosForm As New com.sun.star.awt.Point
Doc = thisComponent
Sh = Doc.Sheets.getByName("Foglio1")
Cella = Sh.getCellRangeByName("B10")
CellaConf = Sh.getCellRangeByName("B15").Value
with Sh.DrawPage
For i = .count - 1 To 0 Step - 1
ShpAddr = .getByIndex(i).Anchor.RangeAddress()
range = Cella.queryintersection(ShpAddr)
If range.RangeAddressesAsString <> "" Then
.remove(.getByIndex(i))
exit For
End if
Next i
End With
Allora io ho risolto così:
1. mi sono reso conto che altri oggetti grafici presenti nell foglio erano ancorati al foglio e non alla cella e quindi finivano nell'elenco. Li ho ancorati alla cella e ho risolto il problema.
2. eliminando "exit For" riesco ad eliminare in un ciclo solo tutti gli oggetti ancorati alla cella B10. Mi sta bene fare così in quanto questi oggetti dovreanno tutti cancellati nello stesso momento ovvero all'inizio del lavoro.
Qualora però fosse utile, mi interesserebbe sapere come si modifica la parte relativa alla creazione del rettangolo per fare si che esso sia subito ancorato ad una cella specifica piuttosto che alla pagina. Se puoi darmi una dritta in proposito.
Non avermene se mi sono permesso di commentare.
Ti ringrazio di nuovo per l'aiuto e chiedo ancora scusa se ho creato un momentaneo scompiglio nelle regole che riguardano il modo di concepire il forum che comprendo perfettamente.
Ritengo comunque che la mia domanda sia stata pienamente risolta dal tuo aiuto
Andrea
Re: [Risolto] Inserire un "Campo di testo" in CALC da macro
Veramente la sostituzione con risolto non era rivolto al tuo messaggio mi sono espresso male, qualche giorno fa in un altro quesito(ora l'ho specificato) è stato interamente sostituito il messaggio iniziale con la sola scritta risolto.
Ultima modifica di Gaetanopr il sabato 23 maggio 2015, 15:25, modificato 1 volta in totale.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: Inserire un "Campo di testo" in CALC da macro
Ci mancherebbe, anzi fai bene in questo modo possiamo arrivare prima alla soluzione e soprattutto chiarire meglio il funzionamento della macro.Mr.Crocodile ha scritto:[Non avermene se mi sono permesso di commentare.
Come puoi vedere da queste istruzioniMr.Crocodile ha scritto:non vedo nessuna istruzione che provveda ad ancorarli ad una cella specifica ed infatti se clicco con il tasto destro sul rettangolino creato e scelgo dal menù contestuale Ancoraggio trovo impostato "alla pagina".
Codice: Seleziona tutto
PosForm.x = Cella.Position.X
PosForm.y = Cella.Position.Y
Drw = Sh.DrawPage
Rettangolo = Doc.createInstance("com.sun.star.drawing.RectangleShape")
Rettangolo.Size = DimForm
Drw.add(Rettangolo)
Rettangolo.Position = PosForm
Mr.Crocodile ha scritto: a quanto ho capito fa un elenco di tutti gli oggetti grafici (compresi i pulsanti) e li ancora alla cella B10 (tranne se questi sono già ancorati a celle) e quindi poi provvede
alla cancellazione del primo in elenco
Non è così, cioè vengono ciclati tutti gli oggetti e ne viene verificata la posizione se si interseca, quindi se si trova sulla cella B10 questo oggetto viene eliminato altrimenti rimane sul foglio.
Exit for serve ad uscire dal ciclo una volta individuato l'oggetto ed eliminato
Spero di essere stato chiaro, in modo tale da poter apportare le modifiche corrette
Ciao
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: Inserire un "Campo di testo" in CALC da macro
Ti riallego il documento che mi avevi mandato nel quale ho inserito le seguenti modifiche per testarne il funzionamento:Gaetanopr ha scritto: Non è così, cioè vengono ciclati tutti gli oggetti e ne viene verificata la posizione se si interseca, quindi se si trova sulla cella B10 questo oggetto viene eliminato altrimenti rimane sul foglio.
Exit for serve ad uscire dal ciclo una volta individuato il primo oggetto ed eliminato
Ho eseguito la macro ponendo la cella B15 = 1 per ottenere la casella come previsto. Poi ho aggiunto a mano altre caselle sparse nel foglio, ho aggiunto 2 pulsanti e due ellissi. Di questi oggetti 3 li ho poi ancorati a delle celle a caso (facendo clic su di essi si vede il simbolo dell'ancoretta, oppure tasto destro Ancoraggio si legge Alla Cella), un quarto l'ho ancorato alla cella B10 (il rombo). Gli altri risultano ancorati alla pagina (compreso quello generato dalla macro).
Ho poi messo in "commento" la riga Exit For che provoca l'uscita dopo la prima cancellazione. E rieseguendo la macro impostando la cella B15 = 0 si cancellano tutti gli oggetti tranne i 3 che erano stati ancorati alle celle diverse dalla B10.
Questo mi sembra confermi che il codice della macro trova tutte gli oggetti del foglio, quelli che non sono ancorati ad una cella specifica li ancora alla cella B10 e poi cancella tutti quelli che risultano ancorati alla cella B10. E durante la creazione dell'oggetto la cella B10 serve solo da riferimento di coordinate per posizionare l'oggetto che tuttavia non è ancorato alla cella, tanto è vero che se lo sposti e poi dal menù contestuale lo ancori ad una cella diversa dalla B10 non verrà più cancellato com'è giusto che sia.
Ora tutto questo mi è stato utile perchè la cancellazione degli oggetti che ho sulla tabella e che provengono da operazioni compiute in momenti diversi, avviene tutta in una volta senza dover fare controlli di nessun genere, avendo solo l'accortezza di ancorare a celle diverse dalla B10 gli altri oggetti che non devono essere cancellati.
Non so se sono stato chiaro.
- Allegati
-
- Shape_Rettangolo_test.ods
- (12.34 KiB) Scaricato 177 volte
Andrea
Re: Inserire un "Campo di testo" in CALC da macro
Ciao, non è così, in pratica la macro va a verificare la posizione dell'oggetto se il suo indirizzo di ancoraggio si interseca con la cella B10 questo oggetto viene eliminato, non è che se non sono ancorati li ancora alla cella B10 come pensi tu.Mr.Crocodile ha scritto: Questo mi sembra confermi che il codice della macro trova tutte gli oggetti del foglio, quelli che non sono ancorati ad una cella specifica li ancora alla cella B10 e poi cancella tutti quelli che risultano ancorati alla cella B10. E durante la creazione dell'oggetto la cella B10 serve solo da riferimento di coordinate per posizionare l'oggetto che tuttavia non è ancorato alla cella, tanto è vero che se lo sposti e poi dal menù contestuale lo ancori ad una cella diversa dalla B10 non verrà più cancellato com'è giusto che sia.
Ora tutto questo mi è stato utile perchè la cancellazione degli oggetti che ho sulla tabella e che provengono da operazioni compiute in momenti diversi, avviene tutta in una volta senza dover fare controlli di nessun genere, avendo solo l'accortezza di ancorare a celle diverse dalla B10 gli altri oggetti che non devono essere cancellati.
Non so se sono stato chiaro.
Gli oggetti creati vengono ancorati ad una specifica cella in questo caso la B10, ora se tu inserisci manualmente degli oggetti e non li ancori alla cella questo è un altro discorso e và trattato diversamente, ecco perchè ti dicevo che non davi abbastanza informazioni sul file reale ed ecco perchè bisogna sempre allegare un file che lo rispecchi.
Se un oggetto è ancorato alla pagina questo significa che è ancorato a tutte le celle presenti sul foglio, quindi da riga e colonna 1 fino a riga 1048576 e colonna 1024, in questo caso è inevitabile che intersechi la cella B10 e di conseguenza l'oggetto venga eliminato.
Per ovviare a questo si può agire diversamente o ancorare gli oggetti sempre alla cella(la macro infatti prevede questo) oppure modificare la macro, dicendo di controllare solo gli oggetti che presentano una sola riga di ancoraggio(quindi gli oggetti creati dalla macro stessa)
Codice: Seleziona tutto
Sub Rettangolo
Dim Doc As Object
Dim Sh As Object, Drw As Object, Rettangolo As Object
Dim Larg As Long, Alt As Long
Dim DimForm As New com.sun.star.awt.Size
Dim PosForm As New com.sun.star.awt.Point
Doc = thisComponent
Sh = Doc.Sheets.getByName("Foglio1")
Cella = Sh.getCellRangeByName("B10")
CellaConf = Sh.getCellRangeByName("B15").Value
with Sh.DrawPage
For i = .count - 1 To 0 Step - 1
if .getByIndex(i).Anchor.Rows.Count = 1 Then
ShpAddr = .getByIndex(i).Anchor.RangeAddress()
range = Cella.queryintersection(ShpAddr)
If range.RangeAddressesAsString <> "" Then
.remove(.getByIndex(i))
' exit For
End if
End if
Next i
End With
If CellaConf = 1 Then
DimForm.Width = Cella.Size.Width
DimForm.Height = Cella.Size.Height
PosForm.x = Cella.Position.X
PosForm.y = Cella.Position.Y
Drw = Sh.DrawPage
Rettangolo = Doc.createInstance("com.sun.star.drawing.RectangleShape")
Rettangolo.Size = DimForm
Drw.add(Rettangolo)
Rettangolo.Position = PosForm
Rettangolo.fillcolor = RGB(255, 255, 153)
Rettangolo.String = 11
End if
End Sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
- Mr.Crocodile
- Messaggi: 36
- Iscritto il: mercoledì 4 giugno 2014, 19:01
Re: Inserire un "Campo di testo" in CALC da macro
Ciao, perfetto, sei stato molto chiaro ed esauriente. Ho interpretato male io il meccanismo della parte di codice racchiusa tra With e End With.
L'unico dubbio che mi resta è sul fatto che la casella creata sia ancorata alla cella B10. Come mai non compare l'ancorotto quando seleziono la casella (come nel caso degli oggetti creati ed ancorati alla cella a mano?) e cliccando col tasto destro alla voce "ancoraggio" leggo impostato "alla pagina"?
Grazie in ogni caso il codice che hai postato all'inizio della discussione è stato utilissimo alla necessità.
L'unico dubbio che mi resta è sul fatto che la casella creata sia ancorata alla cella B10. Come mai non compare l'ancorotto quando seleziono la casella (come nel caso degli oggetti creati ed ancorati alla cella a mano?) e cliccando col tasto destro alla voce "ancoraggio" leggo impostato "alla pagina"?
Grazie in ogni caso il codice che hai postato all'inizio della discussione è stato utilissimo alla necessità.
Andrea
Re: Inserire un "Campo di testo" in CALC da macro
Quando inserisci un oggetto sia manualmente che da macro questo viene ancorato di DEFAULT alla cella ecco perché non ci sono istruzioni in merito nella macro.Mr.Crocodile ha scritto:L'unico dubbio che mi resta è sul fatto che la casella creata sia ancorata alla cella B10. Come mai non compare l'ancorotto quando seleziono la casella (come nel caso degli oggetti creati ed ancorati alla cella a mano?) e cliccando col tasto destro alla voce "ancoraggio" leggo impostato "alla pagina"?
Se vuoi ancorarlo alla pagina devi invece specificarlo in questo modo
Codice: Seleziona tutto
Rettangolo.Anchor = Sh
L'importante è che questa istruzione viene inserita prima delle righe di codice che posizionano l'oggetto altrimenti questo verrà posizionato nella cella A1.
Ecco un esempio di codice
Codice: Seleziona tutto
Drw = Sh.DrawPage
Rettangolo = Doc.createInstance("com.sun.star.drawing.RectangleShape")
Rettangolo.Size = DimForm
Drw.add(Rettangolo)
Rettangolo.Anchor = Sh
Rettangolo.Position = PosForm
Rettangolo.fillcolor = RGB(255, 255, 153)
Rettangolo.String = 11
PS:
Questo su OPENOFFICE invece viene ancorato alla pagina su LIBREOFFICE, quindi per evitare problemi usando entrambe le suite è meglio specificarlo nella macro.Gaetanopr ha scritto:
Quando inserisci un oggetto sia manualmente che da macro questo viene ancorato di DEFAULT alla cella ecco perché non ci sono istruzioni in merito nella macro.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10