Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Office suite

Notices

Rispondi
 
Strumenti discussione
Vecchio 01-12-2014, 10.08.35   #1
omancino
Junior Member
 
Registrato: 18-11-2014
Messaggi: 75
omancino promette bene
Gestione macro da bottone

Avrei bisogno di creare 2 macro (da associare a bottoni) per
1- eseguire una routine che modifica lo stato di alcune celle
2- bloccarla a piacimento (con reset delle celle allo stato iniziale).

In rete non ho trovato nulla si semplice per il mio livello di conoscenza: suggerimenti?
Grazie
omancino non è collegato   Rispondi citando
Vecchio 01-12-2014, 20.25.52   #2
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
Rif: Gestione macro da bottone

cosa intendi per modifica dello stato delle celle?

colore di fondo, formattazione, dimensioni ???
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 02-12-2014, 10.33.47   #3
omancino
Junior Member
 
Registrato: 18-11-2014
Messaggi: 75
omancino promette bene
Rif: Gestione macro da bottone

Ho già recuperato in rete una macro che fa lampeggiare le celle in questione
Il mio problema sta' nella necessità di bloccare (da bottone) l'esecuzione di tale macro e "resettare" il formato delle celle alla condizione iniziale.
Banalizzando, riesco ad attivare la macro senza problemi, ma non riesco a fermarla...
La macro in oggetto è:

Sub lampo()
Static FLASH As Boolean
Dim DELTAt As Date
DELTAt = "00:00:01"
CELLA = "A1"
FOGLIO = "Foglio1"
For I = 3 To 100
If Cells(I, 10).Value <> "" And Cells(I, 10).Value >= 31 Then
Select Case FLASH
Case True
Sheets(FOGLIO).Cells(I, 3).Interior.Color = RGB(255, 200, 210) 'ROSSO CHIARO
Case Else
Sheets(FOGLIO).Cells(I, 3).Interior.Color = RGB(255, 0, 0) 'ROSSO
End Select
Else
Cells(I, 3).Interior.ColorIndex = xlNone 'Nessun colore
End If
Next
FLASH = Not (FLASH)
Application.OnTime Now + TimeValue(DELTAt), "lampo"
End Sub
omancino non è collegato   Rispondi citando
Vecchio 03-12-2014, 00.52.33   #4
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
Rif: Gestione macro da bottone

con quel codice io non vedo niente.
se tu vuoi far lampeggiare la data nella cella A1 del foglio attivo puoi fare così

Per avviare il lampeggio associ a un pulsante la macro Inizia e per fermarla associ all'altro pulsante la macro ferma. questo il codice completo

Codice:
Dim colore As Integer, flag As Boolean

Sub inizia()
colore = 0
flag = True
tempo
End Sub

Sub Lampeggio()
  If flag = True Then
  Sheets("foglio1").Range("A1") = Now
  Sheets("foglio1").Range("A1").Font.Color = RGB(255, colore, colore)
  cambiaC
  tempo
  Else
  End If
End Sub

Function tempo()
Application.OnTime Now + 0.000006, "Lampeggio"
End Function

Sub ferma()
    flag = False
End Sub

Public Sub cambiaC()
colore = 200 - colore
End Sub
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 03-12-2014, 17.55.44   #5
omancino
Junior Member
 
Registrato: 18-11-2014
Messaggi: 75
omancino promette bene
Rif: Gestione macro da bottone

Alexandra, la tua soluzione è efficace, ma non riesco ad adeguarla alla mia macro. In particolar modo, non riesco ad integrare il ciclo For I = 3 To 100
If Cells(I, 10).Value <> .....
che è fondamentale per il mio lavoro.
Continuo a provarci, ma non ne vengo a capo
omancino non è collegato   Rispondi citando
Vecchio 03-12-2014, 21.47.09   #6
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
Rif: Gestione macro da bottone

dal tuo codice si vede che scorri le righe a partire dalla riga 3 fino alla riga 100 con un ciclo For e se nella colonna 10 della riga processata c'è un valore maggiore o uguale a 31 allora vuoi far lampeggiare data e ora nella cella della stessa riga ma alla colonna 3

C'è un qualche problema, in quanto mentre stai eseguendo il ciclo For non riesci a far lampeggiare il dato inserito in quanto il lampeggio è un continuo scambio tra routine sfruttando l'effetto del cambiamento di colore in un breve intervallo di tempo.

La soluzione potrebbe essere di far eseguire PRIMA il ciclo For e inserire nella colonna 3 la data per i valori maggiori o uguali a 31 rilevati nella colonna 10 e successivamente prendere tutto il range e farlo lampeggiare. Ovviamente se nella colonna 10 si trova un valore inferiore a 31 non viene trascritto niente nella colonna 3

Una soluzione come questa è soddisfacente per le tue esigenze??
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 04-12-2014, 13.19.21   #7
omancino
Junior Member
 
Registrato: 18-11-2014
Messaggi: 75
omancino promette bene
Rif: Gestione macro da bottone

Alexandra grazie per l'attenzione e la pazienza. Provo a spiegarmi meglio: la macro dovrebbe verificare il contenuto di un campo calcolato (differenza tra campo data pre-inserito e un altro in cui viene inserita la data odierna (tramite funzione OGGI)). Se tale valore supera i 31 gg, deve lampeggiare la sola cella a colonna 3 che GIA' contiene un identificativo della transazione "scaduta".
A tutto questo, dovrei aggiungere una macro (ed associarci un bottone) che mi consenta di eliminare il lampeggiamento dopo avere verificato quanto mi serviva.
Ti allego un file con esempio dove la macro di lampeggiamento funziona ma non riesco a disattivarla e le celle lampeggianti rimangono colorate "fisse" ad una successiva riapertura.
Files allegati
Tipo file: zip lampeggio controllato.zip (16,9 Kb, 2 visite)
omancino non è collegato   Rispondi citando
Vecchio 04-12-2014, 21.58.30   #8
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
Rif: Gestione macro da bottone

guardo il codice
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 05-12-2014, 00.41.02   #9
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
Rif: Gestione macro da bottone

prova a vedere se va bene così. questo il codice

Codice:
Dim colore As Integer, flag As Boolean

Sub Lampeggio()
For i = 3 To 10
  If Cells(i, 10).Value > 31 Then
    Sheets("foglio1").Cells(i, 3).Interior.Color = RGB(255, colore, colore)
  End If
Next
  If flag = True Then
    cambiaC
    tempo
  Else
  End If
End Sub

Sub init()
colore = 30
flag = True
tempo
End Sub

Function tempo()
Application.OnTime Now + 0.000006, "Lampeggio"
End Function

Sub cambiaC()
colore = 218 - colore
End Sub

Sub ferma()
flag = False
End Sub
parti con la sub init che associ al pulsante, mentre per stoppare assegni ad altro pulsante la macro ferma
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 05-12-2014, 15.43.27   #10
omancino
Junior Member
 
Registrato: 18-11-2014
Messaggi: 75
omancino promette bene
Rif: Gestione macro da bottone

Praticamente perfetto. Un ultimo dettaglio: volendo "ripulire" le celle colorate prima di uscire dal file ho utilizzato le seguenti istruzioni:

Sub Cancella()
For i = 3 To 100
Sheets("foglio1").Cells(i, 3).ClearFormats
Next
End Sub

Che ne pensi?
Grazie infinite!

P.S. una curiosità: a cosa serve esattamente l'istruzione
colore = 218 - colore
e perché hai impostato colore=30 nella routine di init?
omancino non è collegato   Rispondi citando
Vecchio 05-12-2014, 22.17.37   #11
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
Rif: Gestione macro da bottone

dato che stai operando con il foglio attivo e sai qual'è l'intervallo potresti semplificare con

Codice:
ActiveSheet.Range("C3:C100").ClearFormats
Per creare l'effetto del lampeggio si deve cambiare colore alle celle in un breve lasso di tempo, infatti c'è una continua chiamata tra due routine (tempo e Lampeggio), mentre con la routine cambiaC si cambia il colore. per cui nella sub di partenza (init) viene fissato il valore della variabile colore a 0

e con l'istruzione ....= RGB(255, colore, colore) fissiamo il colore delle celle, e questa istruzione inserendo il valore della variabile colore la possiamo anche scrivere = RGB(255, 0, 0), che è il codice esadecimale del colore rosso e nella routine cambiaC viene eseguito un calcolo matematico, essendo il valore di colore = a 0, l'istruzione colore = 218 - colore può essere scritta anche come colore = 218 - 0, per cui si ottiene colore = 218

quando la routine tempo riporta il flusso del programma nella routine Lampeggio la variabile colore diventa = RGB(255,218,218) che è il codice esadecimale del rosso chiaro. in pratica nella routine init fissi il tipo di colore che vuoi usare (rosso, verde giallo etc.) inserendo il corrispettivo numerico del colore (0-1-3 etc.) e nella routine cambiaC inserisci il secondo valore del codice esadecimale che scegli come secondo colore
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 07-12-2014, 02.43.12   #12
RunDLL
Gold Member
 
L'avatar di RunDLL
 
Registrato: 20-05-2004
Loc.: Perugia
Messaggi: 4.188
RunDLL è nella strada per il successo
Rif: Gestione macro da bottone

La programmazione non è una cosa banale.
___________________________________

Ogni computer ha la sua storia.
Dermatite Seborroica? www.dermatiteseborroica.info
RunDLL non è collegato   Rispondi citando
Vecchio 09-12-2014, 09.54.26   #13
omancino
Junior Member
 
Registrato: 18-11-2014
Messaggi: 75
omancino promette bene
Rif: Gestione macro da bottone

@alexsandra (questa volta ho scritto bene il tuo nickname..) Grazie per l'efficacia delle soluzioni e il dettaglio delle spiegazioni.
@RunDLL hai perfettamente ragione, per questo sto' cercando il salto di qualità dal mero utilizzo delle funzioni standard di Excel alla programmazione.
omancino non è collegato   Rispondi citando
Vecchio 09-12-2014, 21.29.57   #14
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
Rif: Gestione macro da bottone

Quota:
Inviato da omancino Visualizza messaggio
.... sto' cercando il salto di qualità dal mero utilizzo delle funzioni standard di Excel alla programmazione.
non so se hai visto, ma nella sezione guide c'è un corso con molti argomenti, magari ti può aiutare con certi comandi o situazioni che si possono verificare http://forum.wintricks.it/showthread.php?t=155252

se scorri verso il fondo c'è anche un programma completo, guardati il codice.
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 10-12-2014, 10.48.49   #15
omancino
Junior Member
 
Registrato: 18-11-2014
Messaggi: 75
omancino promette bene
Rif: Gestione macro da bottone

Grazie!
omancino non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
problema con macro che non si attiva reaper Software applicativo 6 23-02-2011 19.31.10
Dove e' la macro ?? GIO74 Office suite 1 08-08-2008 15.03.57
eliminazione di un pulsante (attiva macro) Dejan87 Programmazione 8 24-06-2008 15.30.57
aiuto con macro exel.. e vba ken87 Office suite 14 08-09-2006 11.32.11

Orario GMT +2. Ora sono le: 21.03.57.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.