Condividi:        

Checkbox con Excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Checkbox con Excel

Postdi statam » 30/12/15 19:42

Salve a tutti,
sono da poco nell'ambiente excel e sto trovando qualche difficoltà a fare quello che voglio fare, vi spiego sotto due questioni diverse.

QUESTIONE 1:

Ho bisogno di fare delle ceckbox selezionabili con a fianco dei numeri. In un'altra cella una casella di testo e un pulsante modifica.
Nella casella di testo si potranno inserire valori in percentuali da 1 a 100% e cliccando sul pulsante modifica i numeri delle checkbox selezionate dovranno cambiare in base al valore inserito nella casella percentuale.

Vi inserisco un'immagine per farvi capire meglio: Immagine

Dunque visualizzando l'immagine nella colonna A ho le checbox. Nella colonna B ho semplice testo. Nella colonna C ho i numeri (che dovranno cambiare se la checkbox è selezionata).

Nella colonna G ho il numero percentuale che vado a scrivere e nella colonna I ho il pulsante modifica che se cliccato deve fare tutto il lavoro, ovvero controllare se ci sono checkbox selezionate e in tal caso cambiare della percentuale scritta i numeri della riga della checbox selezionata (quelli della colonna C).



QUESTIONE 2:
In postumi dovrò stampare questo foglio e vorrei che le checbox non vengano stampate. E' possibile farlo?


Grazie a chi decida di aiutarmi.
statam
Utente Junior
 
Post: 47
Iscritto il: 30/12/15 19:30

Sponsor
 

Re: Checkbox con Excel

Postdi alfrimpa » 30/12/15 22:21

Ciao Statam

Premesso che avresti dovuto allegare tu un file (e non un'immagine con la quale non si può far niente) ti allego io un file nel quale ho ricostruito il tuo esempio e dove ho inserito la sottostante macro associata al pulsante Modifica.

Ad ogni CheckBox ho associato una cella da D1 a D6 per cui se si seleziona la prima Checkbox la cella D1 assumerà valore VERO e così tutte le altre (volendo la colonna D si può anche nascondere).

Una volta che avrai selezionato le Checkbox che ti interessano cliccando su Modifica i valori della colonna C che hanno la Checkbox selezionata varieranno in base al valore di G2

Codice: Seleziona tutto
Sub modifica()
Dim rng As Range
Dim cel As Range
Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row)
For Each cel In rng
    If cel.Value = True Then
        cel.Offset(0, -1).Value = Range("G2").Value
    End If
Next cel
End Sub


Questo il link al file

http://www.filedropper.com/statam

Fai sapere se era questo che volevi.

P.S. Ho già impostato le caselle di controllo affinché non vengano stampate e se hai bisogno di chiarimenti chiedi pure.

PP.SS. Io ho utilizzato una macro associata al pulsante ma penso che il tutto si possa fare anche con le formule (ovviamente con una colonna d'appoggio
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Checkbox con Excel

Postdi alfrimpa » 30/12/15 22:39

E questa è la versione con le sole formule.

http://www.filedropper.com/statam1

Non so quale delle due ritieni più idonea per te.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Checkbox con Excel

Postdi statam » 31/12/15 14:23

alfrimpa ha scritto:Ciao Statam

Premesso che avresti dovuto allegare tu un file (e non un'immagine con la quale non si può far niente) ti allego io un file nel quale ho ricostruito il tuo esempio e dove ho inserito la sottostante macro associata al pulsante Modifica.

Ad ogni CheckBox ho associato una cella da D1 a D6 per cui se si seleziona la prima Checkbox la cella D1 assumerà valore VERO e così tutte le altre (volendo la colonna D si può anche nascondere).

Una volta che avrai selezionato le Checkbox che ti interessano cliccando su Modifica i valori della colonna C che hanno la Checkbox selezionata varieranno in base al valore di G2

Codice: Seleziona tutto
Sub modifica()
Dim rng As Range
Dim cel As Range
Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row)
For Each cel In rng
    If cel.Value = True Then
        cel.Offset(0, -1).Value = Range("G2").Value
    End If
Next cel
End Sub


Questo il link al file

http://www.filedropper.com/statam

Fai sapere se era questo che volevi.

PP.SS. Io ho utilizzato una macro associata al pulsante ma penso che il tutto si possa fare anche con le formule (ovviamente con una colonna d'appoggio


Alfredo innanzitutto ti ringrazio per la celere e cortese risposta.
Scusa se non ti ho allegato il file comunque la prima soluzione con la macro associata al pulsante è quello che mi serve, solo che anzichè cambiare il valore con quello scritto sulla cella G2 io devo aumentare o diminuire il valore dei numeri delle checkbox selezionate della "percentuale" della cella G2.
Per esempio: Seleziono a,b,c che voglio aumentare (scrivo nella cella G2) del 10%. I valori dei numeri delle checkbox selezionate una volta che clicco su mudifica dovranno aumentare o diminuire (se preceduti da un -) del 10%.

Inoltre come faccio a nascondere la colonna D (con il vero o falso del flag della checkbox)?

P.S. Ho già impostato le caselle di controllo affinché non vengano stampate e se hai bisogno di chiarimenti chiedi pure.

In realtà questo per me è un file di esempio poi dovrò farlo in un file più grande, come si fa a far si chè le checkbox non vengano stampate su carta una volta mandato in stampa?


Grazie ancora!
statam
Utente Junior
 
Post: 47
Iscritto il: 30/12/15 19:30

Re: Checkbox con Excel

Postdi alfrimpa » 31/12/15 15:09

Ciao Statam

Modifica la macro come vedi qui sotto

Codice: Seleziona tutto
Sub modifica()
Dim rng As Range
Dim cel As Range
Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row)
For Each cel In rng
    If cel.Value = True Then
        cel.Offset(0, -1).Value = cel.Offset(0, -1).Value + cel.Offset(0, -1).Value * Range("G2").Value / 100  <=== Riga modificata
    End If
Next cel
End Sub


Per quanto riguarda la non stampa delle caselle devi fare così:

1) Seleziona il controllo
2) Tasto dx del mouse e Formato Controllo
3) Vai in Proprietà e deseleziona la casella "Stampa Oggetto"

Devi fare questa operazione per tutte le checkbox che hai.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Checkbox con Excel

Postdi statam » 02/01/16 16:41

alfrimpa ha scritto:Ciao Statam

Modifica la macro come vedi qui sotto
Codice: Seleziona tutto
Sub modifica()
Dim rng As Range
Dim cel As Range
Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row)
For Each cel In rng
    If cel.Value = True Then
        cel.Offset(0, -1).Value = cel.Offset(0, -1).Value + cel.Offset(0, -1).Value * Range("G2").Value / 100  <=== Riga modificata
    End If
Next cel
End Sub


Per quanto riguarda la non stampa delle caselle devi fare così:

1) Seleziona il controllo
2) Tasto dx del mouse e Formato Controllo
3) Vai in Proprietà e deseleziona la casella "Stampa Oggetto"

Devi fare questa operazione per tutte le checkbox che hai.


Grazie ancora funziona alla grande.

Vorrei però chiederti il significato dei comandi usati così da comprenderli meglio.

Sub modifica()
Dim rng As Range [*Qui crei due variabili]
Dim cel As Range
Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row) [*alla variabile rng dici di prendere in considerazione i controlli della checkbox (il mio problema è che se sposto i controlli in un altra colonna ad esempio "k1:k" non funziona più niente). ] [*Cells(Rows.Count, 4).End(xlUp).Row) <- cosa vuol dire?]
For Each cel In rng
If cel.Value = True Then
cel.Offset(0, -1).Value = cel.Offset(0, -1).Value + cel.Offset(0, -1).Value * Range("G2").Value / 100 <=== Riga modificata
End If
Next cel
End Sub


Grazie ancora e buon anno!!
statam
Utente Junior
 
Post: 47
Iscritto il: 30/12/15 19:30

Re: Checkbox con Excel

Postdi alfrimpa » 02/01/16 18:03

Ciao Statam

Ora sono fuori casa e senza pc a disposizione; appena rientro (il 6/1) cercherò di risponderti in maniera compiuta.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Checkbox con Excel

Postdi statam » 06/01/16 17:49

Ok grazie, attendo un tuo messaggio allora
statam
Utente Junior
 
Post: 47
Iscritto il: 30/12/15 19:30

Re: Checkbox con Excel

Postdi alfrimpa » 07/01/16 10:52

Allora Statam cerco di spiegare passo passo

Le istruzioni 1 e 2 sono, come giustamente hai capito, dichiarazioni di variabili

Con la istruzione 3 imposto la variabile Range rng con l'intervallo che va dalla cella D1 all'ultima cella piena della colonna D

Con le istruzione 4, 5, 6, 7 e 8 inizio un ciclo che passa in rassegna ogni cella dell'intervallo rng; se il valore della cella è uguale a TRUE (VERO) il valore della cella immediatamente a sinistra viene modificato in base alla percentuale indicata nella cella G2 (è un semplice calcolo aritmetico)

Codice: Seleziona tutto
Sub modifica()
 1 Dim rng As Range
 2 Dim cel As Range
 3 Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row)
 4 For Each cel In rng
    5 If cel.Value = True Then
        6 cel.Offset(0, -1).Value = cel.Offset(0, -1).Value + cel.Offset(0, -1).Value * Range("G2").Value / 100  <=== Riga modificata
    7 End If
 8 Next cel
End Sub


La macro è stata scritta sulla base dell'esempio da te fornito.

Se tu sposti le colonne la macro non può più funzionare

L'istruzione

Codice: Seleziona tutto
Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row)


andrà modificata così se la colonna da prendere in esame è la K:

Codice: Seleziona tutto
Set rng = Range("k1:k" & Cells(Rows.Count, 11).End(xlUp).Row)


Non so se sono stato chiaro e comunque per ogni ulteriore chiarimento sai come beccarmi (le cose da dire sarebbero tante).
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Checkbox con Excel

Postdi statam » 07/01/16 23:16

alfrimpa ha scritto:Allora Statam cerco di spiegare passo passo

Le istruzioni 1 e 2 sono, come giustamente hai capito, dichiarazioni di variabili

Con la istruzione 3 imposto la variabile Range rng con l'intervallo che va dalla cella D1 all'ultima cella piena della colonna D

Con le istruzione 4, 5, 6, 7 e 8 inizio un ciclo che passa in rassegna ogni cella dell'intervallo rng; se il valore della cella è uguale a TRUE (VERO) il valore della cella immediatamente a sinistra viene modificato in base alla percentuale indicata nella cella G2 (è un semplice calcolo aritmetico)

Codice: Seleziona tutto
Sub modifica()
 1 Dim rng As Range
 2 Dim cel As Range
 3 Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row)
 4 For Each cel In rng
    5 If cel.Value = True Then
        6 cel.Offset(0, -1).Value = cel.Offset(0, -1).Value + cel.Offset(0, -1).Value * Range("G2").Value / 100  <=== Riga modificata
    7 End If
 8 Next cel
End Sub


La macro è stata scritta sulla base dell'esempio da te fornito.

Se tu sposti le colonne la macro non può più funzionare

L'istruzione

Codice: Seleziona tutto
Set rng = Range("d1:d" & Cells(Rows.Count, 4).End(xlUp).Row)


andrà modificata così se la colonna da prendere in esame è la K:

Codice: Seleziona tutto
Set rng = Range("k1:k" & Cells(Rows.Count, 11).End(xlUp).Row)


Non so se sono stato chiaro e comunque per ogni ulteriore chiarimento sai come beccarmi (le cose da dire sarebbero tante).


Alfrè ti ringrazio, sei veramente il migliore! grazie davvero per la tua disponibilità se ci fossero più persone come te sarebbe un mondo migliore!

Pian piano sto comprendendo il codice, la cosa che sbagliavo è il numero che lasciavo 4 in questa riga
Codice: Seleziona tutto
Set rng = Range("k1:k" & Cells(Rows.Count, 11).End(xlUp).Row)
invece doveva essere 11 perchè la colonna k sta all'undicesima posizione.

Ultimo problema è che se non voglio che mi cambi il valore della cella immediatamente a sinistra del controllo (in questo caso k) ma che venga selezionata una cella? ad esempio voglio spostare il controllo sulla colonna k come in questo caso ma i valori che devono cambiare selezionando la checkbox e cliccando su modifica devono rimanere quelli della colonna C.
Devo cambiare il codice "End(xlUp).Row)" giusto? però in che modo?
statam
Utente Junior
 
Post: 47
Iscritto il: 30/12/15 19:30

Re: Checkbox con Excel

Postdi alfrimpa » 07/01/16 23:46

Ciao Statam

Ti ringrazio per le belle parole ma ti posso assicurare che migliori di me (almeno su questo forum) ce ne sono.

Ho letto e riletto la tua ultima domanda ma confesso di non averla capita.

Potresti spiegarti meglio magari allegando un file dove chiarisci meglio il tuo pensiero?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Checkbox con Excel

Postdi statam » 08/01/16 21:45

Hai ragione non mi sono spiegato bene.
Immagine

Ad esempio qui ho spostato i controlli sulla colonna K e sul codice ho cambiato le colonne da prendere in esame quindi:
Codice: Seleziona tutto
Sub modifica()
 1 Dim rng As Range
 2 Dim cel As Range
 3 Set rng = Range("k1:k" & Cells(Rows.Count, 4).End(xlUp).Row)
 4 For Each cel In rng
    5 If cel.Value = True Then
        6 cel.Offset(0, -1).Value = cel.Offset(0, -1).Value + cel.Offset(0, -1).Value * Range("G2").Value / 100
    7 End If
 8 Next cel
End Sub


Solo che in questo modo quando selezione le checkbox e clicco su modifica la cella che va a modificare è quella prima della colonna K, invece io voglio modificare sempre i valori della colonna C (o di un'altra colonna).
Dove gli indico di prendere in considerazione la colonna C per i valori da modificare?
statam
Utente Junior
 
Post: 47
Iscritto il: 30/12/15 19:30

Re: Checkbox con Excel

Postdi alfrimpa » 08/01/16 23:31

Ciao Statam

Come diceva Sherlock Holmes: "elementare Watson...."

Devi modificare l'istruzione:



Codice: Seleziona tutto
cel.Offset(0, -1).Value = cel.Offset(0, -1).Value + cel.Offset(0, -1).Value * Range("G2").Value / 100


così

Codice: Seleziona tutto
cel.Offset(0, -8).Value = cel.Offset(0, -8).Value + cel.Offset(0, -8).Value * Range("G2").Value / 100


P.S. La colonna K puoi anche nasconderla perchè non è necessario che si veda.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Checkbox con Excel

Postdi statam » 16/01/16 19:57

Grazie mille alfr funziona tutto alla grande!!
statam
Utente Junior
 
Post: 47
Iscritto il: 30/12/15 19:30


Torna a Applicazioni Office Windows


Topic correlati a "Checkbox con Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 152 ospiti