Sviluppare funzionalita su Microsoft Office con VBA Spostamento delle stato attivo attivo tra form e applicazione

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

    lac72
    Partecipante

      buon giorno,

      ho aperto un form con vari pulsanti e caselle di testo.

      Ad una casella di testo ho applicato del codice all'evento doubleClick.

      Alla fine della routine, vorrei posizionare lo stato attivo in una cella del foglio excel, in modo da poter digitare direttamente dei dati.

      Invece lo stato attivo mi rimane nella casella di testo in cui ho appena fatto il doppio click, e qual ora digitassi qualcosa verrà scritto sulla casella di testo del form. Volendo scrivere sulla cella devo prima cliccare sull'applicazione. 

      Come posso fare?

      grazie

      #32350 Score: 0 | Risposta

      alfrimpa
      Partecipante
        33 pts

        Devi aprire la userform in modalità vbModeless in modo da poter agire anche sul foglio.

        #32351 Score: 0 | Risposta

        lac72
        Partecipante

          Io posso già scrivere sul mio foglio excel, mentre il form è attivo, vorrei solo che alla fine della routine, sia già attiva la cella in cui devo scrivere senza doverla selezionare.

          Nel caso in cui non seleziono la cella, quello che digito da tastiera, viene scritto nella casella di testo andando a cancellare quello che c'è scritto dentro.

           

          #32352 Score: 0 | Risposta

          Marius44
          Moderatore
            58 pts

            Ciao

            Forse è meglio se alleghi il file (senza dati sensibili)

             

            Ciao,

            Mario

            #32353 Score: 0 | Risposta

            robby
            Partecipante
              2 pts

              lac72 ha scritto:

              Io posso già scrivere sul mio foglio excel, mentre il form è attivo, vorrei solo che alla fine della routine, sia già attiva la cella in cui devo scrivere senza doverla selezionare.

              Alla fine della routine devi selezionare la cella utilizzando il metodo Select. Esempio:

              Range("A1").Select
              #32354 Score: 0 | Risposta

              lac72
              Partecipante

                E' proprio questo il problema, anche scrivendo :

                Range("A1").Select

                il focus resta attivo sul form. 

                Io compilo il form riempendo delle caselle di testo. Con invio passo da una casella all'altra, con l'ultimo invio il focus che nel frattempo si è spostato su un pulsante, avvia la macro. Dopo che la macro ha fatto quello che deve fare, si posiziona sulla cella del foglio di lavoro excel in cui devo continuare a digitare altri dati da tastiera. Invece, rimanendo il focus attivo sul form, devo lasciare la tastiera, prendere il mouse per cliccare sulla cella del foglio di lavoro per poi riprendere la digitazione. 

                Siccome è un ciclo continuo questa operazione diventa fastidiosa. Pensavo fosse facile da ovviare, invece non riesco

                #32355 Score: 0 | Risposta

                robby
                Partecipante
                  2 pts

                  lac72 ha scritto:

                  il focus resta attivo sul form. 

                   

                  Allora prova prima a selezionare il foglio, sempre con Select:

                  Thisworkbook.Sheets("NOMEFOGLIO").Select
                  #32358 Score: 0 | Risposta

                  lac72
                  Partecipante

                    ancora uguale   

                    #32359 Score: 0 | Risposta

                    robby
                    Partecipante
                      2 pts

                      Allora devi allegare il file in modo che si possa provare e trovare la soluzione.

                      #32361 Score: 0 | Risposta

                      lac72
                      Partecipante

                        Allegare l'esempio reale sarebbe troppo complesso.

                        Semplifico al massimo per chiarire meglio il problema.

                        tramite il pulsante 'Form' attivo il form.

                        clicco su casella A, e lascio il mouse perchè dovrò inserire dati da tastiera

                        digito un numero in A

                        premo invio e lo stato attivo si sposta in B

                        digito un numero in B

                        premo invio e lo stato attivo si sposta sul pulsante di comando 'CALCOLA'

                        premo invio una seconda volta. Viene elaborata la macro che copia i dati ed esegue l'operazione

                        alla fine la macro attiva la cella nella colonna 'commento' dove dovrei proseguire ad inserire altri dati avendo ancora le mani sulla tastiera.

                        Invece devo lasciare la tastiera per prendere il mouse, attivare la cella e proseguire a digitare i dati successivi.

                        Alla fine dovrò sempre cliccare sul form per riattivarlo ed eseguire i successivi inserimenti, ma quanto meno dimezzo le volte che devo lasciare la tastiera per prendere in mano il mouse.

                        Spero questa volta che sia più chiaro.

                        grazie

                        Allegati:
                        You must be logged in to view attached files.
                        #32363 Score: 0 | Risposta

                        Marius44
                        Moderatore
                          58 pts

                          Ciao

                          1) potresti provare a creare qualcosa di simile all'originale ma molto più snello ed allegarlo. Così come esponi il problema e dopo quello che ha suggerito @alfrimpa (ciao Alfredo) mi viene oltremodo difficile capire dove può nascondersi l'inghippo.

                          2) tenendo conto di questa frase  "Viene elaborata la macro che copia i dati ed esegue l'operazione alla fine la macro attiva la cella nella colonna 'commento'  " probabilmente dovresti inserire qui il suggerimento di Alfredo, ovviamente con .Select

                          Ciao,

                          Mario

                          #32367 Score: 0 | Risposta

                          robby
                          Partecipante
                            2 pts

                            lac72 ha scritto:

                            Spero questa volta che sia più chiaro.

                            Adesso sì.

                            Modifica la tua routine così:

                            Private Sub cmdCalcola_Click()
                                tot = txtA + txtB
                                r = Cells(1, 1).End(xlDown).Row + 1
                                If r > 1000000 Then r = 2
                                Cells(r, 1) = txtA
                                Cells(r, 2) = txtB
                                Cells(r, 3) = txtA + txtB
                                Cells(r, 4).Select
                            
                                ' aggiungi
                                Me.txtA.Text = ""
                                Me.txtB.Text = ""
                                
                                Me.txtA.SetFocus
                            
                            End Sub
                            

                            Però se prevedi anche di inserire un commento allora devi aggiungere un textbox per inserirlo.

                            A me così funziona benissimo.

                             

                            #32368 Score: 0 | Risposta

                            lac72
                            Partecipante
                              Me.txtA.SetFocus

                              ma il Me. per cosa sta?

                              inoltre così facendo, io sposto il focus sulla casella di testo A e non sulla cella in colonna D del foglio di calcolo.

                              Quello che io vorrei è una sequenza che faccia:

                              1.Digita 1 nella casella di testo A (compare 1 in colonna A)

                              2.premi invio da tastiera (focus si sposta su casella B)

                              3. digita 1 nella casella di testo B  (compare 1 in colonna B)

                              4.premi invio da tastiera (focus si sposta sul pulsante 'CALCOLA')

                              5.premi invio da tastiera (compare 11 in colonna D)

                              6.premi A sulla tastiera (compare la lettera A in colonna D)

                               

                              invece se voglio ottenere il punto 6 devo, dopo il punto 5, prendere il mouse e cliccare sul foglio di lavoro per poi eseguire il punto 6 e ottenere il risultato scritto.

                               

                              #32369 Score: 1 | Risposta

                              Oscar
                              Partecipante
                                45 pts

                                lac72 ha scritto:

                                ma il Me. per cosa sta?

                                inoltre così facendo, io sposto il focus sulla casella di testo A e non sulla cella in colonna D del foglio di calcolo.

                                Quello che io vorrei è una sequenza che faccia:

                                1.Digita 1 nella casella di testo A (compare 1 in colonna A)

                                2.premi invio da tastiera (focus si sposta su casella B)

                                3. digita 1 nella casella di testo B  (compare 1 in colonna B)

                                4.premi invio da tastiera (focus si sposta sul pulsante 'CALCOLA')

                                5.premi invio da tastiera (compare 11 in colonna D)

                                6.premi A sulla tastiera (compare la lettera A in colonna D)

                                 

                                invece se voglio ottenere il punto 6 devo, dopo il punto 5, prendere il mouse e cliccare sul foglio di lavoro per poi eseguire il punto 6 e ottenere il risultato scritto.

                                Quando la userform è attiva non è possibile scrivere sul foglio SE NON LO SELEZIONI COL MOUSE (una soluzione sarebbe aggiungere un'altra TextBox collegata alla colonna D)

                                Allegati:
                                You must be logged in to view attached files.
                                #32371 Score: 0 | Risposta

                                lac72
                                Partecipante

                                  ok

                                  grazie

                                  #32373 Score: 0 | Risposta

                                  robby
                                  Partecipante
                                    2 pts

                                    lac72 ha scritto:

                                    6.premi A sulla tastiera (compare la lettera A in colonna D)

                                    Ti avevo già detto che per questo devi aggiungere un TextBox per la colonna D (Commento).

                                    Non hai letto con attenzione?!

                                    #32391 Score: 0 | Risposta

                                    lac72
                                    Partecipante

                                      Oscar ha scritto:

                                      Quando la userform è attiva non è possibile scrivere sul foglio SE NON LO SELEZIONI COL MOUSE (una soluzione sarebbe aggiungere un'altra TextBox collegata alla colonna D)

                                      in realtà la mia necessità era proprio quella di scrivere sul foglio senza doverlo selezionare. Il fatto di aggiungere il textbox nel mio caso reale non va bene.

                                      considero questa risposta quella buona

                                      comunque grazie

                                    Login Registrati
                                    Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
                                    Rispondi a: Spostamento delle stato attivo attivo tra form e applicazione
                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                    Le tue informazioni: