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

    Ale.1989
    Partecipante

      Ciao a tutti sto usando il comando PrintOut per aprire la finestra di stampa, funziona benissimo ma solo se vado a stampare il foglio.

      Se premo annulla invece di stampa mi va in errore.

      Allego la parte di codice utilizzata

      MsgBox "Dati copiati", vbInformation, " Copia dati"
      Application.Dialogs(xlDialogPrint).Show
      Worksheets("MASCHERA RICERCA").Select
      Range("A1").Select
      #48514 Score: 0 | Risposta

      Aldo Ercolini
      Partecipante
        19 pts

        Per fare un controllo accurato c'e' bisogno del file con tutto il codice.

        Infatti a me una volta aperta la finestra di dialogo e premo annulla, si chiude regolarmente senza errore, ma non e' una prova attendibile in quanto lo scenario non e' il tuo.

        #48515 Score: 0 | Risposta

        Ale.1989
        Partecipante

          Ok scusami pensavo bastasse questo, allego il file.

          Grazie mille

          P.s. utilizzo un Mac 

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

          Aldo Ercolini
          Partecipante
            19 pts

            Mi spiace non posso replicare il tuo scenario in quanto non uso Mac.

            #48522 Score: 0 | Risposta

            alexps81
            Moderatore
              58 pts

              Ciao @Ale.1989

              anche io non ho il MAC. Prova a fare un test sostituendo il tuo codice che questo:

              MsgBox "Dati copiati", vbInformation, " Copia dati"
              
              Dim risposta As Boolean
              risposta = Application.Dialogs(xlDialogPrint).Show
              
              If risposta Then
                  Worksheets("MASCHERA RICERCA").Select
                  Range("A1").Select
              Else
                  MsgBox "Operazione annullata", vbInformation, "Annulla stampa"
              End If
              
              Set wsMR = Nothing
              Set wsST = Nothing
              
              End Sub
              #48525 Score: 0 | Risposta

              Ale.1989
              Partecipante

                Ciao Alex, ho provato la sostituzione del codice ma viene fuori sempre debug, controllando ho visto che la riga evidenziata è la seguente, ma le che vada la tengo così.

                Grazie per il momento

                risposta = Application.Dialogs(xlDialogPrint).Show
                #48528 Score: 0 | Risposta

                alexps81
                Moderatore
                  58 pts

                  Proviamo ad inserire la gestione degli errori.

                  Prova questo codice:

                      MsgBox "Dati copiati", vbInformation, "Copia dati"
                   
                      On Error GoTo ErrorHandler
                      Application.Dialogs(xlDialogPrint).Show
                  
                      Worksheets("MASCHERA RICERCA").Select
                      Range("A1").Select
                  
                  ErrorExit:
                      Set wsMR = Nothing
                      Set wsST = Nothing
                  
                      Exit Sub
                  
                  ErrorHandler:
                      If Err.Number <> 0 Then
                          MsgBox "Operazione annullata dall'utente.", vbInformation
                          Err.Clear
                          Resume ErrorExit
                      End If
                  End Sub

                  L'ho scritto con li Smartphone...spero di non aver commesso errori.

                  #48530 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    Ale.1989 ha scritto:

                    ma viene fuori sempre debug

                    Ma e' strano, quale errore ricevi?

                    Perche' premere Annulla dopo uno Show restituisce sempre False, a quanto mi risulta.

                    #48531 Score: 0 | Risposta

                    Ale.1989
                    Partecipante

                      Si al momento se premo annulla nella finestra di dialogo stampa

                      esce il debug, domani provo con il codice di alex e poi vi aggiorno …

                      grazie delle risposte 

                      #48534 Score: 0 | Risposta

                      Ale.1989
                      Partecipante

                        Ciao ragazzi, Alex anche con il nuovo codice non funziona, in particolare esce il seguente messaggio.

                        errore di runtime 1004

                        metodo show dell'oggetto "dialog" non riuscito

                        #48545 Score: 0 | Risposta

                        scossa
                        Partecipante
                          37 pts

                          Ciao Alex,

                          se mi consenti suggerirei una modifica alla "logica" con cui gestisci il flusso del codice:

                          alexps81 ha scritto:

                          Prova questo codice:

                              On Error GoTo ErrorHandler
                              Application.Dialogs(xlDialogPrint).Show
                          
                              Worksheets("MASCHERA RICERCA").Select
                              Range("A1").Select
                          
                          ErrorExit:
                              Set wsMR = Nothing
                              Set wsST = Nothing
                          
                              Exit Sub
                          
                          ErrorHandler:
                              If Err.Number <> 0 Then
                                  MsgBox "Operazione annullata dall'utente.", vbInformation
                                  Err.Clear
                                  Resume ErrorExit
                              End If
                          End Sub​

                          non trovi che sia poco "lineare"? E' come se per andare da Milano a Verona facessi Milano (Verona) - Venezia - Verona.

                          Non è più semplice e leggibile:

                              On Error GoTo ErrorHandler
                              Application.Dialogs(xlDialogPrint).Show
                          
                              Worksheets("MASCHERA RICERCA").Select
                              Range("A1").Select
                          
                          ErrorHandler:
                              If Err.Number <> 0 Then
                                  MsgBox "Operazione annullata dall'utente.", vbInformation
                                  Err.Clear
                              End If
                          End Sub

                          senza "salti avanti" e "rimbalzi indietro" ?

                          #48547 Score: 0 | Risposta

                          Ale.1989
                          Partecipante

                            Ciao, ho inserito il tuo codice e funziona perfettamente, ho aggiunto solo una riga per tornare al foglio principale in caso di annullamento operazione.

                            Grazie mille a tutti per il tempo dedicato

                            #48550 Score: 0 | Risposta

                            alexps81
                            Moderatore
                              58 pts

                              scossa ha scritto:

                              se mi consenti

                              Caro tu puoi tutto   

                              Avevo pensato a questo Avanti/Dietro perché ci sono queste 2 variabili:

                              Set wsMR = Nothing
                              Set wsST = Nothing

                              da liberare dalla memoria.

                              Quindi se l'esecuzione del codice non crea problemi allora le 2 variabili si cancellano senza problemi. Se invece c'è l'errore allora ci vuole il ritorno a ErrorExit:

                              Comunque la cosa strana che non mi spiego è perché adesso la procedura funziona?! Non è che è cambiato tanto rispetto alla mia. Boh...

                              #48552 Score: 0 | Risposta

                              scossa
                              Partecipante
                                37 pts

                                alexps81 ha scritto:

                                Avevo pensato a questo Avanti/Dietro perché ci sono queste 2 variabili:

                                Set wsMR = Nothing
                                Set wsST = Nothing

                                da liberare dalla memoria.

                                scusami, nell'editare il post mi sono rimaste quelle due istruzioni nella tastiera   , era da intendersi: 

                                    On Error GoTo ErrorHandler
                                    Application.Dialogs(xlDialogPrint).Show
                                
                                    Worksheets("MASCHERA RICERCA").Select
                                    Range("A1").Select
                                
                                ErrorHandler:
                                    If Err.Number <> 0 Then
                                        MsgBox "Operazione annullata dall'utente.", vbInformation
                                        Err.Clear
                                    End If
                                    Set wsMR = Nothing
                                   Set wsST = Nothing
                                End Sub
                                #48553 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  272 pts

                                  Mannaggia Ale, era la mia occasione per riprendere scossa, per una volta, su una cosa che gli era sfuggita    pazienza  

                                  Peccato che mi collego sempre tardi   

                                  pero' rimango sempre perplesso sul fatto che non si riesca ad ottenere False quando si preme Annulla sulla Dialog in questione, senza quindi bisogno di intercettare errori.

                                  #48555 Score: 0 | Risposta

                                  alexps81
                                  Moderatore
                                    58 pts

                                    vecchio frac ha scritto:

                                    Mannaggia Ale, era la mia occasione per riprendere scossa

                                    Ahahahah...come si fa a riprendere @scossa?? Non si può!

                                    Comunque resta il fatto che non ho capito perché adesso la routine funziona e prima no pur restando simile. Pazienza...

                                    #48567 Score: 0 | Risposta

                                    Oscar
                                    Partecipante
                                      45 pts

                                      Buongiorno a tutti volevo solo fare una domanda

                                      Sono anni che sto utilizzando questa macro è sempre andata benissimo , ma solo che se apro l'anteprima e la chiudo . mi scompare la schermata  di diaologo stampa  invece dovrebbe rimanere

                                      IL messaggio di stampa annullata non mi interessa anzi meglio se non c'è

                                      O forse con Excel non è possibile

                                      Grazie a chiunque risponda

                                      Private Sub CommandButton1_Click()
                                      Stampa = Application.Dialogs(xlDialogPrint).Show
                                        If Stampa = True Then
                                           Foglio1.Select
                                           Range("A1").Select
                                           Else
                                           MsgBox "Operazione annullata", vbInformation
                                         End If
                                      End Sub
                                      #48568 Score: 0 | Risposta

                                      LucaSR
                                      Partecipante
                                        15 pts

                                        vecchio frac ha scritto:

                                        pero' rimango sempre perplesso sul fatto che non si riesca ad ottenere False quando si preme Annulla sulla Dialog in questione, senza quindi bisogno di intercettare errori.

                                        Ma non è che invece restituisca Null??

                                        Ho trovato questi 2 link:

                                        https://learn.microsoft.com/it-it/office/vba/api/excel.application.dialogs

                                        https://learn.microsoft.com/it-it/office/vba/api/excel.dialogs

                                         

                                        Dove si evince che Application.Dialogs ha la possibilità di aprire diverse finestre di dialogo tramite i vari parametri dentro le parentesi, restituendo una collezione di oggetti. Detto questo, non parla né di False e né di Null ma presuppongo sia più inerente il Null 🤔

                                        #48574 Score: 0 | Risposta

                                        Oscar
                                        Partecipante
                                          45 pts

                                          Ciao Luca

                                          E cosa te ne fai del (Application.Dialogs(xlDialogOpen).Show ) se devo aprire il dialogo di stampa

                                          #48575 Score: 0 | Risposta

                                          LucaSR
                                          Partecipante
                                            15 pts

                                            Oscar ha scritto:

                                            Ciao Luca

                                            E cosa te ne fai del (Application.Dialogs(xlDialogOpen).Show ) se devo aprire il dialogo di stampa

                                            ??? 🤔 

                                            #48576 Score: 0 | Risposta

                                            Oscar
                                            Partecipante
                                              45 pts

                                              LucaSR ha scritto:

                                              Oscar ha scritto:

                                              Ciao Luca

                                              E cosa te ne fai del (Application.Dialogs(xlDialogOpen).Show ) se devo aprire il dialogo di stampa

                                              Apro il dialogo di stampa visualizzo l'anteprima , chiudo l'anteprima  la maschera di dialogo si chiude anche lei , ma mi deve rimanere aperta

                                              #48577 Score: 0 | Risposta

                                              LucaSR
                                              Partecipante
                                                15 pts

                                                Io continuo a non capire cosa tu voglia dire 🤷🏽‍♂️

                                                Io sto partendo del valore restituito dopo aver aperto un qualsiasi Dialogs. Ho letto che non si sia riuscito ad intercettare il valore False dopo aver cliccato su Annulla ed ho presupposto che sia perché questo restituisca Null.

                                                #48581 Score: 0 | Risposta

                                                vecchio frac
                                                Senior Moderator
                                                  272 pts

                                                  LucaSR ha scritto:

                                                  Ma non è che invece restituisca Null??

                                                  Se in una finestra Immediata chiedo

                                                  ? Application.Dialogs(xlDialogOpen).Show

                                                  e poi clicco su Annulla, ottengo Falso.

                                                  In realta' quindi ottengo "Falso" che non e' proprio uguale a False.

                                                  Ma questo test dice che secondo lui sono equivalenti:

                                                  Sub test()
                                                  Dim v As Variant
                                                      v = Application.Dialogs(xlDialogOpen).Show
                                                      Debug.Print v
                                                      If v Then Debug.Print "ok"
                                                      If v = False Then Debug.Print "ok ok"
                                                      If v = "Falso" Then Debug.Print "ok ok ok"
                                                      Debug.Print VarType(v)
                                                  End Sub
                                                  

                                                  e il controllo sul tipo di variabile che il tipo di v e' 11 cioe' booleano. Quindi e' proprio False, non Null.

                                                  #48582 Score: 0 | Risposta

                                                  LucaSR
                                                  Partecipante
                                                    15 pts

                                                    Hai provato con Null?

                                                     

                                                    #48583 Score: 0 | Risposta

                                                    scossa
                                                    Partecipante
                                                      37 pts

                                                      LucaSR ha scritto:

                                                      Ma non è che invece restituisca Null??

                                                      no, il metodo Application.Dialogs(xlDialogOpen).Show, se non si seleziona la voce OK restituisce False.

                                                      Comunque nemmeno io ho capito cosa vuole fare Oscar: se seleziona Anteprima, poi per stampare deve selezionare, nella finestra dell'anteprima la voce Stampa, che senso ha riaprire la finestra di dialogo?

                                                      Ma se proprio vuole:

                                                      Sub test()
                                                        Dim vRet As Variant
                                                        vRet = Application.Dialogs(xlDialogPrint).Show
                                                        If vRet = True Then
                                                           Foglio1.Select '??
                                                           Range("A1").Select '??
                                                        Else
                                                           vRet = stampa.Show
                                                         End If
                                                      End Sub
                                                      

                                                      giusto per far capire che la cosa non ha gran senso.

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 26 totali)
                                                    Rispondi a: PrintOut
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: