[Risolto] macro basic bottone incremento

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Marrlowe
Messaggi: 46
Iscritto il: lunedì 14 febbraio 2011, 0:38

[Risolto] macro basic bottone incremento

Messaggio 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
Allegati
score.ods
(10.85 KiB) Scaricato 731 volte
Ultima modifica di Marrlowe il domenica 20 febbraio 2011, 17:17, modificato 1 volta in totale.
OpenOffice.org 3.1 Windows XP e Ubuntu
Avatar utente
FncZ4pp4
Messaggi: 285
Iscritto il: domenica 2 gennaio 2011, 20:32

Re: macro basic bottone incremento

Messaggio da FncZ4pp4 »

Puoi assegnare a 100 pulsanti la stessa macro. Ti consiglio di usare la slider (barra di scorrimento dei formulari).
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
OpenOffice 3.3 su Windows XP
Marrlowe
Messaggi: 46
Iscritto il: lunedì 14 febbraio 2011, 0:38

Re: macro basic bottone incremento

Messaggio 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???
OpenOffice.org 3.1 Windows XP e Ubuntu
Avatar utente
FncZ4pp4
Messaggi: 285
Iscritto il: domenica 2 gennaio 2011, 20:32

Re: macro basic bottone incremento

Messaggio 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.
Allegati
Immagine3.jpg
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
OpenOffice 3.3 su Windows XP
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: macro basic bottone incremento

Messaggio 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 
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
Marrlowe
Messaggi: 46
Iscritto il: lunedì 14 febbraio 2011, 0:38

Re: macro basic bottone incremento

Messaggio 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!
OpenOffice.org 3.1 Windows XP e Ubuntu
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: macro basic bottone incremento [RISOLTO]

Messaggio da xergio »

Allego il file con la macro funzionante.
incrementa.ods
(9.68 KiB) Scaricato 1253 volte
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.
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
Avatar utente
FncZ4pp4
Messaggi: 285
Iscritto il: domenica 2 gennaio 2011, 20:32

Re: macro basic bottone incremento [RISOLTO]

Messaggio da FncZ4pp4 »

La macro postata da Xergio funziona benissimo.
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
OpenOffice 3.3 su Windows XP
aleghi
Messaggi: 2
Iscritto il: martedì 20 gennaio 2015, 14:54

Re: macro basic bottone incremento

Messaggio 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!
openoffice 4.0.1 windows 7
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: [Risolto] macro basic bottone incremento

Messaggio da xergio »

Ciao XLUPOGRIGIOX,
per mettere un valore diverso nella cella dove si clicca il pulsante, basta modificare la macro dove c'è:

Codice: Seleziona tutto

oCell.value = oCell.value + 1
cambiando il valore assegnato a oCell.value
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

Re: [Risolto] macro basic bottone incremento

Messaggio da XLUPOGRIGIOX »

Ciao xsergio,e grazie per la risposta.
Quindi volendo mettere incrementare con il valore di una cella,potrebbe essere

Codice: Seleziona tutto

oCell.value = cCell.value + (G6)
Non so se la sintassi sia giusta...
Saluti
OpenOffice 4.1.1 su windows seven
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8954
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: macro basic bottone incremento

Messaggio 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 ….
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: [Risolto] macro basic bottone incremento

Messaggio 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
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

Re: macro basic bottone incremento

Messaggio 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 :)
OpenOffice 4.1.1 su windows seven
Rispondi