Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Controllare presenza 2 matrici

42 views
Skip to first unread message

mau1791

unread,
Aug 1, 2021, 3:26:32 PM8/1/21
to
Ciao a tutti,

in un codice ho 2 matrici contenenti i codici ed i nomi ditte:

CodDitte = Array(3, 5, 7, 8, )
NomeDitte = Array("Luca Spa", "Gigi Srl", "Ale sas", "Marco snc" )

quale codice mi suggerite x ottenere:

Se in A1 del foglio "Cliente!" ho il codice 8 vorrei:
Msgbox --> "Ciao hai scelto Marco snc"

Se in A1 del foglio "Cliente!" ho il codice 6 vorrei:
Msgbox --> "Ciao NON hai scelto nessuna ditta autorizzata"

Grazie.
Maurizio

casanmaner

unread,
Aug 2, 2021, 11:01:54 AM8/2/21
to
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

mau1791

unread,
Aug 3, 2021, 6:03:55 AM8/3/21
to
casanmaner, perfetto (come sempre) e grazie 1000.

mau1791

unread,
Aug 7, 2021, 8:14:23 AM8/7/21
to
Buongiorno,
nel caso l'utente avesse inserito un cliente NON autorizzato come potrei informarlo invece di : "Ciao NON hai scelto nessuna ditta autorizzata!"
con: "Ciao le SOLE ditte autorizzate sono:
3 -> Luca Spa
5 -> Gigi Srl
7 -> Ale sas
8 -> Marco snc"

tnks

casanmaner

unread,
Aug 7, 2021, 9:52:36 AM8/7/21
to
Ciao,
scarica nuovamente il file del precedente link.
Ho modificato in modo che venga creata una stringa di testo con l'elenco dei codici ditta e nomi ditta.
Stringa utilizzata in caso di inserimento di un codice non presente tra quelli ammessi.

mau1791

unread,
Aug 7, 2021, 1:32:26 PM8/7/21
to
Perfetto! grazie ancora.
0 new messages