Condividi tramite

Range Convalida Dati da VBA

Anonimo
2014-06-01T09:07:26+00:00

Buongiorno.

Vorrei risolvere, se possibile il seguente problema.

Nella cella A1 ho impostato una Convalida-Dati con range fisso, diciamo $K$1:$K$20.

Nella cella B1 ho impostato una Convalida-Dati con un range che vorrei fosse variabile (tramite VBA), al variare del valore di A1.

E' possibile?

Grazie delle risposte.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-06-01T09:46:15+00:00

Buongiorno.

Vorrei risolvere, se possibile il seguente problema.

Nella cella A1 ho impostato una Convalida-Dati con range fisso, diciamo $K$1:$K$20.

Nella cella B1 ho impostato una Convalida-Dati con un range che vorrei fosse variabile (tramite VBA), al variare del valore di A1.

E' possibile?

Grazie delle risposte.

Capito poco.

Questo codice, da copia/incollare nel modulo di codice DEL FOGLIO, varia il range K(n):K(n) al quale applicare la convalida dati in base a quanto indicato nella cella A1:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$A$1" Then

        Call m(Target.Value)

    End If

End Sub

Private Sub m(ByVal sRng As String)

    With Me.Range(sRng).Validation

        Me.Range("K:K").Validation.Delete

        .Add Type:=xlValidateList, _

            AlertStyle:=xlValidAlertStop, _

            Operator:=xlBetween, _

            Formula1:="=mioElenco"

    End With

End Sub

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-06-01T11:48:52+00:00

    In effetti, rileggendo il post non ho detto alcune (se non parecchie) cose.

    Tutto nasce dall'esigenza di sostituire n.3 combobox con n.3 celle con convalida-dati, perchè mi sembrano molto più veloci.

    In un foglio ho il database formato da circa 1000 righe e due colonne.

    In un altro foglio ho la progettazione: Questa si svolge su tre celle: A1, A2 e A3.

    I valori a convalida-dati di A1 sono fissi, tipo SC1, SC2 e SC3.

    Vorrei che quando viene selezionato il valore SC1 della cella A1, nella cella A2 il range della convalida-dati sia D1-D200 del foglio database. A sua volta, se nella cella A2, scelgo il valore della cella D120 del database, il range della convalida-dati della cella A3 diventi D701-D800.

    Se invece il valore della cella A1 è SC2, nella cella A2 il range diventi D301-D500, ecc.

    E' possibile?

    Grazie infinite.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-06-01T10:27:19+00:00

    Scusa se ho spiegato poco...

    Comunque mi piacerebbe sapere anche il significato del codice. Ad esempio mioElenco come lo imposto?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-06-01T09:34:12+00:00

    si'

    prendi un altro elenco "fisso" esempio $L$1:$L$20

    dove pero' i valori presenti non sono fissi, ma sono delle formule, esempio in L1

    =indice(M1:Z1;1;$B$2)

    ciao

    mauro27

    La risposta è stata utile?

    0 commenti Nessun commento