Login Registrati
Stai vedendo 21 articoli - dal 1 a 21 (di 21 totali)
  • Autore
    Articoli
  • #43757 Score: 0 | Risposta

    FROST220684
    Partecipante

      Ciao a tutti, nel mio file excel ho un tasto collegato ad una macro che inserisce un numero all'interno di una cella. vorrei affinare tale macro rendendolo come un on/off. Ad esempio se premo il tasto e la cella è vuota metto 1. Se ripremo il tasto e la cella ha al suo interno il numero 1 lo cancello. il codice usato attualmente per inserire il numero 1 è questo:

      Sub tastofedelta()
      Dim wb1 As Workbook
      Set wb1 = ThisWorkbook
      With wb1.Worksheets("Input")
      .Range("J27") = "1"
          End With
      End Sub

      grazie a tutti per l'aiuto

      #43759 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        Suggerimento: cerca e utilizza XOR.

        #43760 Score: 0 | Risposta

        gianfranco55
        Partecipante
          91 pts

          ciao

          vecchio trentino

          XOR ???????

          è la funzione a livello formule che nessuno usa  

          e mi risulta servano due celle da comparare

          non gli basta un misero IF........?

          #43761 Score: 0 | Risposta

          FROST220684
          Partecipante

            l'ho trovata però riesco solo a vederla come formula come la trasformo in codice   

            #43762 Score: 0 | Risposta

            FROST220684
            Partecipante

              effettivamente io pensavo ad un misero if   

              #43763 Score: 0 | Risposta

              gianfranco55
              Partecipante
                91 pts

                ciao

                c'è anche in VBA ma non capisco come applicarla

                e si che a livello formula la conosco.....mai usata ma la conosco

                (per me l'hanno fatta dopo una serata all'Oktoberfest)

                l'if è semplice

                `Sub tastofedelta()
                Dim wb1 As Workbook
                Set wb1 = ThisWorkbook
                With wb1.Worksheets("Input")
                If Range("J27") = 1 Then
                Range("J27") = 0
                Else
                Range("J27") = 1
                End If
                    End With
                End Sub
                `
                #43764 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  FROST220684 ha scritto:

                  effettivamente io pensavo ad un misero if   

                  Sub tastofedelta()
                  Dim wb1 As Workbook
                  
                      Set wb1 = ThisWorkbook
                      With wb1.Worksheets("Input").Range("J27") 
                          .Value = .Value Xor 1
                      End With
                  End Sub
                  #43765 Score: 0 | Risposta

                  FROST220684
                  Partecipante

                    Grazie mille ad entrambi, l'IF funziona correttamente!!!

                    Rispetto la mia domanda iniziale è modificato in questo modo:

                    Sub tastofedelta()
                    Dim wb1 As Workbook
                    Set wb1 = ThisWorkbook
                    With wb1.Worksheets("Input")
                    If Range("J27") = 1 Then
                    Range("J27") = ""
                    Else
                    Range("J27") = 1
                    End If
                        End With
                    End Sub

                    ho modificato solo la parte della zero per cancellare completamente il dato. Grazieeeee

                    #43766 Score: 0 | Risposta

                    tanimon
                    Partecipante
                      16 pts

                      ricorda che prima dell'ultima riga con "End Sub"

                      è sempre meglio rendere a Nothing le variabile Oggetto con 

                      Set nome_oggetto = Nothing

                       

                      #43767 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        gianfranco55 ha scritto:

                        per me l'hanno fatta dopo una serata all'Oktoberfest

                        #43768 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          FROST220684 ha scritto:

                          Rispetto la mia domanda iniziale è modificato in questo modo

                          Ottimo e allora visto che Xor non ti piace, adesso riscrivi tutto utilizzando l'istruzione IIf   

                          #43769 Score: 0 | Risposta

                          gianfranco55
                          Partecipante
                            91 pts

                            ciao trentino velenoso

                            mi istruisci su XOR in vba

                            questa stringa

                            .Value = .Value Xor 1

                             

                            se trovo 1 = FALSO

                            se trovo altro =VERO

                            è giusto?

                            #43770 Score: 0 | Risposta

                            Raffaele53
                            Partecipante
                              23 pts

                              Cercato in rete e trovato https://www.excelvba.it/forumexcel/codici-segreti-con-loperatore-xor/

                              Letto e provato, ma mi domandavo cosa centrava nel merito

                              #43771 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                272 pts

                                gianfranco55 ha scritto:

                                se trovo 1 = FALSO

                                se trovo altro =VERO

                                è giusto?

                                No in realtà. Se le proposizioni sono entrambe vere o sono entrambe false il risultato è falso. Se sono diverse il risultato è vero. Questo concetto va applicato bit per bit nell'algebra booleana sottostante:

                                zero xor 1 = 0000 xor
                                                      0001 =
                                ---------------------------
                                                      0001 cioè 1
                                1 xor 1      = 0001 xor
                                                      0001 =
                                ---------------------------
                                                      0000 cioè zero

                                 

                                 

                                #43772 Score: 0 | Risposta

                                alexps81
                                Moderatore
                                  58 pts

                                  Riprendendo il codice di V_F si potrebbe aggiungere una riga IF secondo me:

                                  Sub tastofedelta()
                                  Dim wb1 As Workbook
                                  
                                      Set wb1 = ThisWorkbook
                                      With wb1.Worksheets("Input").Range("J27") 
                                          .Value = .Value Xor 1
                                          If .Value = 0 Then .Value = ""
                                      End With
                                  End Sub

                                  Da quello che leggo nella guida in linea, in modo molto semplice da spiegare, l'operatore XOR esegue un confronto logico su variabili Booleane o  numeriche.

                                  Restituisce True se le 2 variabili sono diverse

                                  Restituisce False se le 2 variabili sono uguali

                                  Il confronto può essere fatto anche bit per bit tenendo conto dei confronti dei vari numeri binari.

                                  #43773 Score: 0 | Risposta

                                  gianfranco55
                                  Partecipante
                                    91 pts

                                    ah!

                                    è la stessa cosa della formula allora.

                                    pensavo prendesse un altro significato con il vba

                                    #43775 Score: 0 | Risposta

                                    tanimon
                                    Partecipante
                                      16 pts

                                      so di essere testardo, ma mi hanno insegnato ad esserlo... anche quelli che di vba ne sanno più  di me

                                       

                                      possibile che nessununo suggerisca di rendere a Nothing le variabili Oggetto

                                      che è una cosa che mi hanno insegnato quelli che tutti ritengono essere i maghi del vba?

                                       

                                      credo di essere veramente "arrivato" e che per quanto si verifica nel Forum,

                                      abbia fatto bene Patel  a dedicarsi ad altro

                                       

                                      Non lamentiamoci... e soprattutto cerchiamo di suggerire soluzioni "senza sbavature"

                                       

                                      #43776 Score: 0 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        272 pts

                                        gianfranco55 ha scritto:

                                        è la stessa cosa della formula allora.

                                        Almeno c'è coerenza    comunque questo è terreno di scossa... lui fa colazione con pane e Boole ogni mattina.   

                                        #43777 Score: 0 | Risposta

                                        vecchio frac
                                        Senior Moderator
                                          272 pts

                                          tanimon ha scritto:

                                          possibile che nessununo suggerisca di rendere a Nothing le variabili Oggetto

                                          In linea di massima sì, è una buona pratica e fai bene a dirlo e ribadirlo. Ma ha un vero significato solo per gli oggetti esterni all'applicazione in uso. Quando sei dentro una Excel Application e utilizzi costantemente gli oggetti di quello spazio, è poi Excel stesso che li annienta automaticamente (altrimenti dovresti annientare sempre ogni oggetto Range, Cell, Worksheet eccetera). La distruzione esplicita degli oggetti è benissimo farla quando ti avvali di oggetti creati con CreateObject (per l'esempio di late binding).

                                          tanimon ha scritto:

                                          credo di essere veramente "arrivato" e che per quanto si verifica nel Forum,

                                          abbia fatto bene Patel  a dedicarsi ad altro

                                          Non so cosa abbia fatto traboccare il tuo vaso, però mi dispiace che dici così. Non sappiamo poi se patel si stia dedicando ad altro per volontà o per altre cause quindi non supponiamo niente   

                                          #43778 Score: 0 | Risposta

                                          tanimon
                                          Partecipante
                                            16 pts

                                            vecchio frac ha scritto:

                                            tanimon ha scritto:

                                            possibile che nessununo suggerisca di rendere a Nothing le variabili Oggetto

                                            ciao,

                                            senza togliere niente al tuo autorevole parere,

                                            se lo ritiene opportuno, gradirei sapere anche quello di Marco

                                             

                                            #43781 Score: 0 | Risposta

                                            scossa
                                            Partecipante
                                              37 pts

                                              vecchio frac ha scritto:

                                              comunque questo è terreno di scossa...

                                              Una spiegazione abbastanza semplice riguardo a XOR l'ho scritta ne Il Gioco del Mese NIM , non la ricopio qui, ma andate alla parte 3 post del 18/07/2015 23:43:51.

                                              Ma ha un vero significato solo per gli oggetti esterni all'applicazione in uso. 

                                              io direi che "il rischio maggiore viene dagli oggetti esterni .....", perché se si lavora aprendo più file excel chiudendoli in modo randomatico (come spesso avviene in ambito lavorativo) e riaprendone altri, un certo rischio c'è anche giocando in casa; quindi io preferisco distruggere, voi fate vobis   

                                            Login Registrati
                                            Stai vedendo 21 articoli - dal 1 a 21 (di 21 totali)
                                            Rispondi a: tasto on/off
                                            Gli allegati sono permessi solo ad utenti REGISTRATI
                                            Le tue informazioni: