non stampare se ci sono celle vuote

Anonimo
2019-04-28T06:47:05+00:00

Buongiorno, avrei questo problema:

ho un file excel composto da due fogli che sono due moduli, io vorrei che se non vengono riempite determinate celle la stampa non parte.

Ho inserito il codice che allego, ma il problema sta nel fatto che quando si clicca su stampa mi chiede di riempire le celle anche dell'altro foglio che in realtà non c'è bisogno perchè io posso aver bisogno di un solo  foglio dei due... ho sbagliato qualcosa nel codice?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2019-05-01T09:13:43+00:00

Ciao Enzo,

Ciao Norman, questa è fantastica, proprio ciò che cercavo!!! grazie infinite!!!

Prego! :-)

Alla prossima.

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2019-04-30T10:29:35+00:00

Ciao Enzo,

Per gestire la compilazione di più celle, prova un approccio del genere:

'=========>>

Option Explicit

'--------->>

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Dim SH As Worksheet

    Dim arrCelle As Variant, arrAvvisi As Variant

    Dim rCell As Range

    Dim sMsg As String

    Dim i As Long

    Const sFoglioDaCompilare As String = "Avviso di sinistro"     '<<=== Modifica

    Const sFoglio2DaCompilare As String = "Presa di posizione"  '<<=== Modifica

    Const sCelleDaCompilare As String = "G14,G20, G22"            '<<=== Modifica

    Const sCelle2DaCompilare As String = "C5,C7"                         '<<=== Modifica

    Const sAvvisi As String = _

          "Inserire data del sinistro nella cella ," _

          & "Inserire ora del sinistro nella cella ," _

          & "Inserire minuto del sinistro nella cella "                       '<<=== Modifica

    Const sAvvisi2 As String = _

          "Inserire cognome collaboratore nella cella ," _

          & "Inserire numero GEVA nella cella "                               '<<=== Modifica

    For Each SH In Me.Windows(1).SelectedSheets

        With SH

            If .Name = sFoglioDaCompilare Then

                arrAvvisi = Split(sAvvisi, ",")

                arrCelle = Split(sCelleDaCompilare, ",")

                For i = LBound(arrCelle) To UBound(arrCelle)

                    Set rCell = .Range(arrCelle(i))

                    With rCell

                        If .Value = vbNullString Then

                            sMsg = arrAvvisi(i) & .Address(0, 0)

                            Application.Goto rCell

                            Cancel = True

                            GoTo XIT

                        End If

                    End With

                Next i

            ElseIf .Name = sFoglio2DaCompilare Then

                arrAvvisi = Split(sAvvisi2, ",")

                arrCelle = Split(sCelle2DaCompilare, ",")

                For i = LBound(arrCelle) To UBound(arrCelle)

                    Set rCell = .Range(arrCelle(i))

                    With rCell

                        If .Value = vbNullString Then

                            sMsg = arrAvvisi(i) & .Address(0, 0)

                            Application.Goto rCell

                            Cancel = True

                            GoTo XIT

                        End If

                    End With

                Next i

            End If

        End With

    Next SH

XIT:

    If sMsg <> vbNullString Then

        Call MsgBox( _

             Prompt:=sMsg, _

             Buttons:=vbInformation, _

             Title:="REPORT")

    End If

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2019-04-29T08:41:54+00:00

Ciao Enzo,

non funziona, anzi adesso stampa senza l'avviso di riempire le celle vuote.

A me invece il codice funziona nel modo previsto e senza alcun problema. Come richiesto, il codice considera solo il riempimento dei fogli selezionati. Quindi, per testare il codice, prova a stampare sia un foglio che entrambi i fogli di interesse.

Potresti scaricare il mio file di prova Enzo20190428.xlsm.

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2019-04-28T10:51:23+00:00

Ciao Enzo,

Buongiorno, avrei questo problema:

ho un file excel composto da due fogli che sono due moduli, io vorrei che se non vengono riempite determinate celle la stampa non parte.

Ho inserito il codice che allego, ma il problema sta nel fatto che quando si clicca su stampa mi chiede di riempire le celle anche dell'altro foglio che in realtà non c'è bisogno perchè io posso aver bisogno di un solo  foglio dei due... ho sbagliato qualcosa nel codice?

Prova qualcosa del genere:

'=========>>

Option Explicit

'--------->>

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Dim SH As Worksheet

    For Each SH In Me.Windows(1).SelectedSheets

        With SH

            If .Name = "Avviso di sinistro" Then

                If .Range("G14").Value = vbNullString Then

                    Call MsgBox( _

                         Prompt:="Inserire data del sinistro nella cella G14", _

                         Buttons:=vbInformation, _

                         Title:="REPORT")

                    Application.Goto .Range("G14")

                    Cancel = True

                    Exit Sub

                End If

            ElseIf .Name = "Presa di posizione" Then

                If .Range("C5").Value = vbNullString Then

                    Call MsgBox( _

                         Prompt:="Inserire cognome collaboratore nella cella C5", _

                         Buttons:=vbInformation, _

                         Title:="REPORT")

                    Application.Goto .Range("C5")

                    Cancel = True

                    Exit Sub

                ElseIf .Range("C7").Value = vbNullString Then

                    Call MsgBox( _

                         Prompt:="Inserire numero GEVA nella cella C7", _

                         Buttons:=vbInformation, _

                         Title:="REPORT")

                    Application.Goto .Range("C7")

                    Cancel = True

                    Exit Sub

                End If

            End If

        End With

    Next SH

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2019-04-28T15:05:20+00:00

    Ciao Norman, non funziona, anzi adesso stampa senza l'avviso di riempire le celle vuote.

    La risposta è stata utile?

    0 commenti Nessun commento