Questo sito utilizza cookie, anche di terze parti, per migliorare la tua esperienza e offrire servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie

Rimani informato sugli aggiornamenti di SOS-OFFICE. Inserisci il tuo indirizzo e-mail: Informativa sulla privacy

Nel post di oggi voglio approfondire un argomento che suscita sempre una certa discussione nel miei corsi. Infatti, quando in Excel si sceglie di applicare una convalida dei dati, se ci sono dati che violano la regola impostata già presenti nell’intervallo a cui si applica la convalida dei dati, questi non sono evidenziati in modo automatico.
Occorre scegliere Dati > Convalida dati > Cerchia dati non validi per evidenziare con cerchi rossi i dati non validi già presenti sul foglio di lavoro nel momento di definizione delle regole di convalida.
Purtroppo questi cerchi rossi non si possono stampare. Per poterli stampare occorre simularli con dei cerchi tracciati con una forma. Questa soluzione è proposta da Microsoft stessa.

Tutto questo tramite VBA. Ve ne propongo qui una versione semplificata e in italiano. L’ideale è inserire questa funzionalità in un componente aggiunto con una barra multifunzione personalizzata che contiene dei pulsanti per mettere questi cerchi ai dati non validi e per poi eliminarli.
Trovate il componente aggiuntivo pronto allegato a questo articolo.
Inserite il codice che proponiamo in un modulo di codice.
Ecco la routine che aggiunge i cerchi ai dati non validi

Sub cerchiaNonValidi(control As IRibbonControl)
Dim celleConConvalida As Range
Dim i As Integer
Dim cella As Range
Dim cerchio As Shape
y = 0
'assegno all'intervallo celleConConvalida tutte le celle a cui è applicato un criterio di convalida
On Error GoTo errore
Set celleConConvalida = Cells.SpecialCells(xlCellTypeAllValidation)
For Each cella In celleConConvalida
If Not cella.Validation.Value Then
y = y + 1
Set cerchio = ActiveSheet.Shapes.AddShape(msoShapeOval, _
cella.Left - 2, cella.Top - 2, cella.Width + 4, cella.Height + 4)
cerchio.Fill.Visible = msoFalse
cerchio.Line.ForeColor.SchemeColor = 10
cerchio.Line.Weight = 1.25
cerchio.Name = "nonValido" & y
End If
Next
Exit Sub
errore: MsgBox "il foglio non contiene regole di convalida"
End Sub

NOTA l’argomento control As IRibbonControl passato alla routine serve se la si vuole richiamare dalla barra multifunzione, altrimenti lo si deve eliminare.

Il cuore di questo codice è la riga

Set celleConConvalida = Cells.SpecialCells(xlCellTypeAllValidation)

In questa riga si assegna alla variabile/range celleConConvalida l’insieme di tutte le celle a cui è applicato un criterio di convalida.
Fatto questo, con un ciclo For each, si analizzano tutte le celle di questo intervallo e se la cella viola il criterio di convalida if Not cella.Validation.Value, allora si disegna intorno ad essa un cerchio rosso (oggetto dell’insieme shapes).
All’oggetto cerchio viene poi assegnato un nome che contiene la parola nonValido e un numero progressivo (cerchio.Name = "nonValido" & y).
Questo nome ci permetterà di distinguere questi cerchi che evidenziano i dati on validi da tutte le altre forme eventualmente presenti nel foglio di lavoro. Questo sarà sfruttato nella routine che elimina questi cerchi

Sub eliminaCerchi(control As IRibbonControl)
Dim cerchio As Shape
For Each cerchio In ActiveSheet.Shapes
If cerchio.Name Like "nonValido*" Then cerchio.Delete
Next
End Sub

Per alcune informazioni sulla creazione di componenti aggiuntivi, potete consultare l'articolo VBA - Inserire automaticamente la data corrente in una cella Excel e i componenti aggiuntivi

Per la personalizzazione della barra moltifunzione, fate rierimento ali articoli Personalizzare la barra multifunzione di Office 2007 e Office 2010 e Personalizzare la barra multifunzione di Office 2007 e Office 2010.

Attachments:
Download this file (datiNonvalidiStampa.xlam)datiNonvalidiStampa.xlam[ ]16 kB
Joomla templates by a4joomla