Alex



  • Alex
    di Alex (utente non iscritto) data: 10/10/2015 17:53:36

    Buonasera a tutti,
    vi propongo il seguente problema: ho preparato un lavoro in cui l'inserimento dei nomi (stringhe testuali) da parte degli utenti è vincolato sia dal fatto che uno stesso nome non può essere usato più di una volta, sia dal fatto che esso deve essere compreso in un certo elenco di nomi. In genere uso il convalida dati ma in questo caso non posso dato che il programma deve rendermi due messaggi diversi a seconda che si verifichi l'una o l'altra condizione. Quindi ho pensato al VBA ma è qui che per me iniziano i problemi.
    Vi allego un file che non è quello su cui sto lavorando ma che esemplifica bene il problema.
    In tale file l'utente immette i valori testuali nell'area verde del foglio input (celle E4-E11) con un inserimento da elenco; il valore viene quindi ribaltato sul foglio Condizioni dove nella colonna G viene effettuato il riconoscimento dell'errore eventuale: in particolare viene restituito 0 qualora il nome non compaia nell'elenco consentito (celle D5-D14 del foglio DB), 1 qualora sia già stato utilizzato. Il risultato 2 contrassegna un inserimento corretto.
    Io vorrei che quando l'utente immette sul foglio Input un valore che generi un errore, appaia sullo stesso foglio (Input) una message box distinta a seconda dell'errore (vedi foglio Msg).
    E' possibile? Da solo non ci riesco a creare un codice del genere, c'è qualcuno che mi può dare una mano?
    Come sempre vi seguo attentamente.
    Grazie mille
    e saluti.

    Alex



  • di Cucù data: 10/10/2015 20:40:24

    Dal titolo "Alex" ho già capito qual'è il tuo problema quindi mi evito di leggere tutta la pappardella della spiegazione...


  • Message box
    di Alex (utente non iscritto) data: 10/10/2015 23:36:32

    il titolo avrebbe dovuto essere Message box ma ho sbagliato a digitare



  • di alfrimpa data: 11/10/2015 17:05:50

    Ciao Alex

    Premetto di non essere affatto sicuro di aver interpretato bene il tuo quesito.

    Prova la sottostante macro che va inserita nel modulo del foglio "Input"

    In ogni caso ti allego anche il file (Alex.xlsm)

    Fai delle prove e fai sapere.

    Alfredo
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim val As Integer
    If Not Intersect(Target, Range("e3:e10")) Is Nothing Then
        If Target.Rows.Count > 1 Then Exit Sub
        If Target.Value = "" Then Exit Sub
            val = Worksheets("Condizioni").Range("f" & Target.Row).Value
            Select Case val
                Case Is = 0
                    MsgBox "Immettere denominazione in DB"
                Case Is = 1
                    MsgBox "Denominazione già usata"
                Case Is = 2
                    MsgBox "Ok"
            End Select
    End If
    End Sub






  • di Alex (utente non iscritto) data: 12/10/2015 18:21:30

    Hai capito perfettamente Alfredo e infatti il codice che mi hai fornito gira alla grande.
    Grazie mille (ti direi.. "a buon rendere"..ma ne dubito fortemente)

    Saluti e grazie ancora
    Alessandro



  • di alfrimpa data: 12/10/2015 19:50:36

    Grazie a te Alessandro del riscontro.

    La soddisfazione di avere aiutato è più che sufficiente.

    Alfredo