Ciao,
qui trovi un file di esempio:
https://www.dropbox.com/s/2c51ceb8kiz1etc/Controllare%20presenza%202%20matrici.xlsm?dl=0
nel modulo di classe del foglio trovi l'evento Worksheet_Change.
Quando nella cella A1 inserisci dei numeri se questi vengono trovati nella matrice CodDitte viene lanciato il messaggio che avvisa di aver selezionato una ditta andando a pescare il nome nella matrice NomeDitte.
Diversamente viene lanciato un messaggio di errore che indica che non è stata scelta una ditta presente nella matrice dei codici ditte.
Questo il codice VBA dell'evento change:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CodDitte As Variant
Dim NomeDitte As Variant
Dim rng As Range
Dim vMatch As Variant
Dim sDitta As String
Dim sTestoAvviso As String
Dim sVbButton As VbMsgBoxStyle
On Error GoTo GestioneErrori
CodDitte = Array(3, 5, 7, 8)
NomeDitte = Array("Luca Spa", "Gigi Srl", "Ale sas", "Marco snc")
Application.EnableEvents = False
Set rng = Intersect(Target(1), Range("A1"))
If Not rng Is Nothing Then
If rng.Value <> "" Then
vMatch = Application.Match(rng.Value, CodDitte, 0)
If Not IsError(vMatch) Then
sDitta = NomeDitte(vMatch - 1)
sTestoAvviso = "Ciao hai scelto " & Chr(34) & sDitta & Chr(34)
sVbButton = vbInformation
Else
sTestoAvviso = "Ciao NON hai scelto nessuna ditta autorizzata!"
sVbButton = vbCritical
End If
MsgBox sTestoAvviso, sVbButton, "Scelta Ditte"
End If
End If
RiprendiErrore:
Application.EnableEvents = True
Exit Sub
GestioneErrori:
MsgBox "Si è verificato un errore imprevisto!" & vbNewLine & _
"Errore n. " & Err.Number & vbNewLine & _
Err.Description
GoTo RiprendiErrore
End Sub