Sviluppare funzionalita su Microsoft Office con VBA Riportare la caption di un button in cella attiva

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

    alexps81
    Moderatore
      29 pts

      Buon giorno, è da tempo che non sono più attivo e dato che sono molto arrugginito chiedo una mano a voi esperti. 

       

      In un foglio ho circa 10 button (che al bisogno posso modificare la caption), ognuno di essi ha una caption diversa. Al click su uno di essi vorrei poter scrivere la caption sulla cella attiva.

      Purtroppo sto scrivendo tramite cellulare e non ho possibilità di inserire file di esempio. 

       

      Grazie a chi mi aiuta. 

       

       

      #27681 Score: 0 | Risposta

      GiuseppeMN
      Partecipante
        19 pts

        Buona giornata @alexps81;
        per CommandButton1 potresti provare con:

        Option Explicit
        
        Private Sub CommandButton1_Click()
        ActiveCell.Value = CommandButton1.Caption
        End Sub

        Analogamente per gli altri CommandButton.

         

        Giuseppe

        #27682 Score: 0 | Risposta

        tanimon
        Partecipante
          16 pts

          ciao,

          se sono CommandButton,

          cellaattiva.text = CommandButton.Caption

          all"ultima riga di codice dell"evento click del button

          ciao

          Frank

          Giuseppe (ciao   ) mi ha anticipato di 1 minuto ahahah

          #27683 Score: 0 | Risposta

          alexps81
          Moderatore
            29 pts

            Ok grazie. Proverò i vostri suggerimenti. Anche se in realtà pensavo a una singola Sub in un modulo e ogni CommandButton la va a richiamare. Tipo un ciclo For Each. Cmq grazie per il momento. 

            #27684 Score: 0 | Risposta

            tanimon
            Partecipante
              16 pts

              ciao Alex ed un saluto a Giuseppe   ,

              con due CommandButton sul foglio1, prova od adatta secondo le tue necessità.

              A me funzionano.

               

              Ciao

              Frank

              Public prova As String
              
              
              Sub a()
              Dim sh As Worksheet
              Set sh = Sheets("Foglio1")
              
                  sh.Activate
                  ActiveCell.Value = prova
               
              
              End Sub
              
              Private Sub CommandButton1_Click()
              Dim spazio As String
              spazio = Right(CommandButton1.Name, 2)
              
              If Not IsNumeric(spazio) Then prova = CommandButton1.Caption
              
              Call a
              End Sub
              
              Private Sub CommandButton2_Click()
              Dim spazio As String
              spazio = Right(CommandButton2.Name, 2)
              
              If Not IsNumeric(spazio) Then prova = CommandButton2.Caption
              
              
              Call a
              End Sub
              
              #27685 Score: 0 | Risposta

              GiuseppeMN
              Partecipante
                19 pts

                Buona sera a Tutti.

                @alexps81, in #27683 scrive:

                ... in realtà pensavo a una singola Sub in un modulo e ogni CommandButton la va a richiamare. Tipo un ciclo For Each. ...

                Considerando che nella vita non si finisce mai di imparare sarei veramente interessato a caire come "in un Modulo" si possano gestire più CommandButton.

                Grazie a chi potrà aiutarmi a chiarire questo arcano.

                Giuseppe

                P.s Leggo solo ora la proposta di Ftank, che saluto, ma in un Modulo non riesco a capire come fare per attivarla.

                #27687 Score: 0 | Risposta

                tanimon
                Partecipante
                  16 pts

                  ciao a tutti,

                  ciao Alex e Giuseppe,

                  solo una precisazione:

                  per la mia conoscenza, concordo con quanto asserito da Giuseppe, in un Modulo non è possibile gestire CommandButtons. Quindi l'istruzione più idonea è quella proposta ai post #27681 e #27682

                  Poi, secondo le indicazioni di Alex,

                  alexps81 ha scritto:

                  Al click su uno di essi vorrei poter scrivere la caption sulla cella attiva.

                  alexps81 ha scritto:

                  Anche se in realtà pensavo a una singola Sub in un modulo e ogni CommandButton la va a richiamare.

                  ho creato una variabile pubblica nel modulo che deve essere richiamato dal click del Button.

                   

                  Public prova As String

                  Sub a()
                  Dim sh As Worksheet
                  Set sh = Sheets("Foglio1")

                  sh.Activate
                  ActiveCell.Value = prova

                  End Sub

                  poi nel modulo del Foglio1 dove ho inserito 2 Buttons e per ogni button

                  Private Sub CommandButton1_Click()
                  Dim spazio As String
                  spazio = Right(CommandButton1.Name, 2)

                  If Not IsNumeric(spazio) Then prova = CommandButton1.Caption

                  Call a
                  End Sub

                  Private Sub CommandButton2_Click()
                  Dim spazio As String
                  spazio = Right(CommandButton2.Name, 2)

                  If Not IsNumeric(spazio) Then prova = CommandButton2.Caption

                  Call a
                  End Sub

                  Ribadisco, la soluzione più adatta è quella proposta in precedenza, ma la richiesta è chiara:

                  Alex vuole una Sub richiamata dal click del Button ed ovviamente ogni Button presente sul Foglio1,

                  deve avere il proprio codice che valorizza la variabile e richiama la Sub che valorizza la cella attiva.

                  Non mi piace, ma questo è come ho letto la richiesta e come sempre ho cercato di "soddisfare il cliente"

                  anche se la sua richiesta non è tanto "logica".

                  Ciao.

                  Frank

                  #27689 Score: 0 | Risposta

                  GiuseppeMN
                  Partecipante
                    19 pts

                    Buona giornata, @tanimon;
                    perdonami Frank ma la richiesta di @alexps81 credo fosse iversa;

                    @alexps81, in #27683, scrve:

                    ... Anche se in realtà pensavo a una singola Sub in un modulo e ogni CommandButton la va a richiamare. Tipo un ciclo For Each ...

                    Quindi da quello che posso capire la richiesta è:
                    - Un Codice VBA inserito in Modulo nel quale tramite un ciclo For Each possa individuare il CommandButton selezionato e quindi inserire la relativa Caption nella Cella attiva.

                    In Forum sono propenso a fornire non al singolo Utente ma a tutti coloro interessati alla discussione le informazioni corrette; a Tutti gli Utenti credo di poter affermare, per quanto in mia conoscenza, che la richiesta non può essere risolta in un Modulo ne tantomeno con un Ciclo For Each o For Next.

                    Per qunto concerne "soddisfare il Cliente" direi che se mi trovo sull'orlo di un precipizio e "il Cliente" mi dice:
                    prendi la rincorsa e salta ... gli dico no grazie, provaci tu.

                    Ma l'età è quella che è e di certo non aiuta, forse hai ragione Tu e la richiesta era proprio quella che hai risolto con i tuoi Codici VBA.

                     

                    Giuseppe

                    #27730 Score: 0 | Risposta

                    tanimon
                    Partecipante
                      16 pts

                      ciao a tutti,

                      ciao Alex,

                      ed un doveroso saluto a  Giuseppe   

                       

                      come già detto ogni CommandButton, deve avere il proprio codice, ma questa versione mi piace di più.

                      Allego file e codice e,

                      vista la latitanza di Alex abbandono la discussione.

                      Ciao

                      Frank

                      Option Explicit
                      
                      
                      Private Sub CommandButton1_Click()
                      
                      cliccato = True
                      num = Right(CommandButton1.Caption, 1)
                      Call controllo
                      
                      End Sub
                      
                      Private Sub CommandButton2_Click()
                      
                      cliccato = True
                      num = Right(CommandButton2.Caption, 1)
                      Call controllo
                      End Sub
                      

                       

                       

                       

                      Public cliccato As Boolean, num As Integer
                      
                      Sub controllo()
                      
                      If cliccato = True Then
                          ActiveCell.Value = ActiveSheet.OLEObjects("CommandButton" & num).Object.Caption
                          cliccato = False
                              
                      End If
                      
                      End Sub
                      
                      Allegati:
                      You must be logged in to view attached files.
                      #27733 Score: 0 | Risposta

                      tanimon
                      Partecipante
                        16 pts

                        ciao a tutti,

                        ciao Giuseppe   

                        credo che quanto in allegato sia ancora più "lineare" del precedente

                        ciao

                        Frank

                         

                        Private Sub CommandButton1_Click()
                        cliccato = True
                        Me.CommandButton1.Enabled = False
                        Call controllo
                        
                        End Sub
                        
                        Private Sub CommandButton2_Click()
                        cliccato = True
                        Me.CommandButton2.Enabled = False
                        Call controllo
                        End Sub
                        
                        Private Sub CommandButton3_Click()
                        cliccato = True
                        Me.CommandButton3.Enabled = False
                        Call controllo
                        End Sub
                        

                         

                        Public cliccato As Boolean
                        
                        Sub controllo()
                        
                        Dim n As Integer, x As Integer
                        
                        
                            x = ActiveSheet.OLEObjects.Count
                            
                            For n = 1 To x
                        
                                If cliccato = True And ActiveSheet.OLEObjects(n).Enabled = False Then
                                    ActiveCell.Value = ActiveSheet.OLEObjects("CommandButton" & n).Object.Caption
                                    cliccato = False
                                    ActiveSheet.OLEObjects(n).Enabled = True
                                    Exit For
                                End If
                            Next n
                        
                        End Sub
                        

                         

                         

                        Allegati:
                        You must be logged in to view attached files.
                      Login Registrati
                      Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)
                      Rispondi a: Riportare la caption di un button in cella attiva
                      Gli allegati sono permessi solo ad utenti REGISTRATI
                      Le tue informazioni: