Pagina 1 di 1
[Risolto] macro basic bottone incremento
Inviato: lunedì 14 febbraio 2011, 0:43
da Marrlowe
Ho creato dei bottoni e ogni volta che ne premo
uno si incrementa il valore di una specifica cella.
La macro in basic è questa per la cella I6 del Foglio1:
Sub incrementaI6
oSheet = ThisComponent.Sheets.getByName("Foglio1")
oCell = oSheet.getCellrangeByName("I6")
oCell.value = oCell.value + 1
end sub
Ora però il problema è che sta macro è poco flessibile perchè se ho
100 bottoni in un foglio devo scrivere 100 macro... e poi se voglio duplcare il foglio non so se le macro funzionerebbero nel foglio2...
Non so proprio niente di Basic...Come si scrive la macro che assegnata a qualsiasi bottone fa incrementare il valore della cella assegnata al bottone? (c'è anche il problema di assegnare il bottone alla cella che non saprei come risolvere...).
Vi allego il foglio su cui sto lavorando: 18 bottoni, 18 macro...
Se riuscite a risolvere sarebbe fantastico, grazie
Re: macro basic bottone incremento
Inviato: lunedì 14 febbraio 2011, 3:45
da FncZ4pp4
Puoi assegnare a 100 pulsanti la stessa macro. Ti consiglio di usare la slider (barra di scorrimento dei formulari).
Re: macro basic bottone incremento
Inviato: lunedì 14 febbraio 2011, 8:24
da Marrlowe
slider??? come posso usare la stessa macro per 100 bottoni se quella macro incrementa il valore della cella I6 nel Foglio1 quando io vorrei incrementare il valore di 100 celle diverse???
Re: macro basic bottone incremento
Inviato: lunedì 14 febbraio 2011, 13:12
da FncZ4pp4
Marrlowe ha scritto:slider??? come posso usare la stessa macro per 100 bottoni se quella macro incrementa il valore della cella I6 nel Foglio1 quando io vorrei incrementare il valore di 100 celle diverse???
Ho capito male, pensavo che la cella è sempre la stessa. La slider è una barra di scorrimento che si può legare ad una cella per aumentare o diminuire il suo valore numerico, la puoi orientale anche in verticale. vedi immagine sotto.
Comunque se proprio vuoi usare i pulsanti e le macro, sono in grado di fare tutto ciò con 1 solo pulsante semplicemente selezionando la cella interessata e aumentargli il valore numerico. Se sei interessato fammi sapere.
Re: macro basic bottone incremento
Inviato: venerdì 18 febbraio 2011, 22:59
da xergio
Il codice che segue è quello che ti interessa (derivato, con piccole modifiche, da questo post di Pitonyak
http://www.oooforum.org/forum/viewtopic.phtml?t=106235 )
n.b.: è indifferente dal foglio e dalla posizione del cursore, dipende dalla cella a cui è ancorato il pulsante.
Codice: Seleziona tutto
Sub incrementa(oEvent)
Dim oControlModel
Dim oParent
Dim oCell
'Print oEvent.Source.Model.getName()
oControlModel = oEvent.Source.Model
oParent = oControlModel.getParent()
Do While NOT oParent.supportsService("com.sun.star.sheet.SpreadsheetDocument")
oParent = oParent.getParent()
Loop
oCell = FindCellWithControl(oParent.getCurrentController().getActiveSheet().getDrawPage(), oControlModel)
If NOT IsEmpty(oCell) Then
oSheet = ThisComponent.Sheets(oCell.getCellAddress.Sheet)
oCell = oSheet.getCellrangeByName(oCell.AbsoluteName)
oCell.value = oCell.value + 1
'Print "Control is in cell " & oCell.AbsoluteName
Else
Pritn "Unable to find cell with control"
ENd If
End Sub
Function FindCellWithControl(oDrawPage, oControl)
Dim oShape
Dim oAnchor
oShape = FindShapeForControl(oDrawPage, oControl)
If Not IsEmpty(oShape) Then
If oShape.getAnchor().supportsService("com.sun.star.sheet.SheetCell") Then
FindCellWithControl = oShape.getAnchor()
End If
End If
End Function
Function FindShapeForControl(oDrawPage, oControl)
Dim i
Dim oShape
For i = 0 To oDrawPage.getCount()
oShape = oDrawPage.getByIndex(i)
If oShape.supportsService("com.sun.star.drawing.ControlShape") Then
If EqualUNOObjects(oControl, oShape.Control) Then
FindShapeForControl = oShape
Exit Function
End If
End If
Next
End Function
Re: macro basic bottone incremento
Inviato: domenica 20 febbraio 2011, 17:17
da Marrlowe
Il codice che avete postato non mi funziona, mentre quello che ho trovato qui
http://user.services.openoffice.org/en/ ... 45&t=17425 funziona e mi sembra anche più semplice da usare e customizzare (per esempio per un decremento). Grazie comunque a tutti!
Re: macro basic bottone incremento [RISOLTO]
Inviato: domenica 20 febbraio 2011, 21:51
da xergio
Allego il file con la macro funzionante.
C'è comunque una bella differenza tra incrementare la cella attiva (che vuol dire cliccare sulla cella e quindi cliccare sul pulsante) e incrementare la cella su cui è ancorato il pulsante (che vuol dire cliccare sul pulsante e basta), che mi pareva fosse la tua richiesta.
Re: macro basic bottone incremento [RISOLTO]
Inviato: domenica 20 febbraio 2011, 22:22
da FncZ4pp4
La macro postata da Xergio funziona benissimo.
Re: macro basic bottone incremento
Inviato: martedì 20 gennaio 2015, 15:15
da aleghi
FncZ4pp4 ha scritto:Marrlowe ha scritto:slider??? come posso usare la stessa macro per 100 bottoni se quella macro incrementa il valore della cella I6 nel Foglio1 quando io vorrei incrementare il valore di 100 celle diverse???
Ho capito male, pensavo che la cella è sempre la stessa. La slider è una barra di scorrimento che si può legare ad una cella per aumentare o diminuire il suo valore numerico, la puoi orientale anche in verticale. vedi immagine sotto.
Comunque se proprio vuoi usare i pulsanti e le macro, sono in grado di fare tutto ciò con 1 solo pulsante semplicemente selezionando la cella interessata e aumentargli il valore numerico. Se sei interessato fammi sapere.
A me interesserebbe un lavoro come questo!
Re: [Risolto] macro basic bottone incremento
Inviato: venerdì 29 maggio 2015, 22:33
da xergio
Ciao XLUPOGRIGIOX,
per mettere un valore diverso nella cella dove si clicca il pulsante, basta modificare la macro dove c'è:
cambiando il valore assegnato a oCell.value
Re: [Risolto] macro basic bottone incremento
Inviato: venerdì 29 maggio 2015, 23:46
da XLUPOGRIGIOX
Ciao xsergio,e grazie per la risposta.
Quindi volendo mettere incrementare con il valore di una cella,potrebbe essere
Non so se la sintassi sia giusta...
Saluti
Re: macro basic bottone incremento
Inviato: sabato 30 maggio 2015, 12:44
da charlie
xergio ha scritto:Ciao XLUPOGRIGIOX, ….
XLUPOGRIGIOX ha scritto:Ciao xsergio,e grazie per la risposta. ….
Non si capisce come vi collegate ai messaggi precedenti ….
Re: [Risolto] macro basic bottone incremento
Inviato: sabato 30 maggio 2015, 18:43
da unlucky83
Rispondo nonostante la giusta bacchettata di charlie
oCell.value = cCell.value +
(G6)
Sintassi Sbagliata
Sintassi corretta
Codice: Seleziona tutto
oCell2=ThisComponent.Sheets.getByName("NOMEFOGLIO").getCellRangeByName("Indirizzocella es: A1")
oCell.value = cCell.value + oCell2.value
Re: macro basic bottone incremento
Inviato: lunedì 1 giugno 2015, 23:04
da XLUPOGRIGIOX
Scusa charlie,hai ragione!!!
Avevo chiesti a xsergio con un messaggio,per non continuare una discussione già risolta,come modificare la macro in modo che invece di incrementare di tot valore una cella,si incrementi una cella con il valore di un altra.
Chiedo ancora scusa a charlie e grazie a unlucky83 per gli aiuti utilissimi che mi sta dando