creare casella discesa



  • creare casella discesa
    di pipp (utente non iscritto) data: 15/05/2015 08:18:38

    SAlve,
    vorrei creare delle caselle a discesa utilizzando il codice Vba, quando entro sulle celle di una colonna specifica.
    ho trovato questo codice:
    ma come faccio a lanciare i codice quando entro nella casella (la colonna è fissa, cambia solo la riga??) D....riga
    Sub Elenco_a_discesa()
    Dim ListaNomi As String
    Dim ListaFogli As String
    Dim Foglio As Object

    Range("a1").Select
    ActiveWorkbook.Names.Add Name:="ListaNomi", RefersToR1C1:="='Foglio1'!R1"

    With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
    Operator:=xlBetween, Formula1:="=ListaNomi"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
    End With
    '
    For i = 1 To 10
    ListaFogli = ListaFogli & "aaaaaadd" & ","
    ListaFogli = ListaFogli & "aaaaaadd"
    Next



    Range("a3").Select
    ListaFogli = Left(ListaFogli, Len(ListaFogli) - 1)

    With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
    Operator:=xlBetween, Formula1:=ListaFogli
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
    End With

    End Sub





  • di Micky (utente non iscritto) data: 15/05/2015 11:23:55

    Ciao pipp.........io ho provato il tuo codice, e ho capito che bisogna lanciare il codice ancora prima di entrarci nella casella..........altrimenti, in effetti, come faccio a entrare nella casella e contemporaneamente a lanciare il codice? Dunque, va proprio, per prima cosa, lanciato il codice e vedrai che si verrà a formare la casella a discesa sia per il Range "a1" che per il Range "a3".-



  • di alfrimpa data: 15/05/2015 12:38:10

    Ciao Pipp

    Non ho ben capito cosa vuoi fare; nel presupposto che il codice che hai postato faccia quello che vuoi, per limitarne l'esecuzione allo spostamento del cursore solo sulla colonna D potresti racchiuderlo come mostrato qui sotto; il tutto va poi messo nel modulo del foglio interessato (non modulo standard).

    Alfredo
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("d:d")) Is Nothing Then
    ... Tuo codice
    End If
    End Sub