E' possibile gestire un "Nome" ("Assegna Nome") tramite VB?

Anonimo
2011-11-23T08:47:27+00:00

Volevo fare in modo che tramite VB quando aggiorno un elenco nominativo a cui è assegnato un nome mi venga aggiornato il range che lo compone in "Gestione Nomi". Ho provato a modificare una macro registrata:

Sub Macro1()

xRiga = Sheets("Foglio1").Cells(Rows.Count, 2).End(xlUp).Row

    Sheets("Foglio1").Select

    With ActiveWorkbook.Names("ElencoNomi")

        .Name = "Pazienti"

        .RefersTo = "=Foglio1!B2:B" & xRiga

        .Comment = ""

    End With

    Sheets("Foglio2").Select

End Sub

ma mi restituisce dei valori sballati, non sono riuscito a capire bene l'utilizzo di "RefersTo".

Se esiste altro metodo per fare questa cosa ben venga; grazie anticipatamente e buona giornata a tutti.

Ciao Antonio

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
2011-11-23T10:13:32+00:00

Ciao Mauro e grazie della risposta veloce; il codice sembra funzionare, nel senso c

he il msgbox indica correttamente il range interessato ma poi se faccio un controllo su "Gestione Nomi" mi trovo un range spostato in altra colonna, in pratica quello che grossomodo mi succedeva con la macro che avevo provato io; sbaglio qualcosa? Eventualmente posso allegarti un file di esempio?

Ciao Antonio

opsss, sì scusa la fretta(oggi poco tempo da dedicare al forum), mancava il riferimento assoluto. Modifica così la riga interessata:

ThisWorkbook.Names.Add Name:="ElencoNomi", RefersTo:= _

             "=Foglio1!$B$2:$B$" & lRiga

Ti chiedo scusa per averti fatto perdere tempo.

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-11-23T10:36:31+00:00

    Perfetto, era una stupidaggine, con più attenzione, avrei dovuto capirla anche da solo ..

    Grazie del supporto e buon lavoro.

    Ciao Antonio

    Buon lavoro a te e grazie per il cortese riscontro. Buona giornata.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-11-23T10:19:00+00:00

    Perfetto, era una stupidaggine, con più attenzione, avrei dovuto capirla anche da solo ..

    Grazie del supporto e buon lavoro.

    Ciao Antonio

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-11-23T09:56:38+00:00

    Ciao Mauro e grazie della risposta veloce; il codice sembra funzionare, nel senso c

    he il msgbox indica correttamente il range interessato ma poi se faccio un controllo su "Gestione Nomi" mi trovo un range spostato in altra colonna, in pratica quello che grossomodo mi succedeva con la macro che avevo provato io; sbaglio qualcosa? Eventualmente posso allegarti un file di esempio?

    Ciao Antonio

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2011-11-23T09:12:27+00:00

    Volevo fare in modo che tramite VB quando aggiorno un elenco nominativo a cui è assegnato un nome mi venga aggiornato il range che lo compone in "Gestione Nomi". Ho provato a modificare una macro registrata:

     

    Sub Macro1()

    xRiga = Sheets("Foglio1").Cells(Rows.Count, 2).End(xlUp).Row

        Sheets("Foglio1").Select

        With ActiveWorkbook.Names("ElencoNomi")

            .Name = "Pazienti"

            .RefersTo = "=Foglio1!B2:B" & xRiga

            .Comment = ""

        End With

        Sheets("Foglio2").Select

    End Sub

    ma mi restituisce dei valori sballati, non sono riuscito a capire bene l'utilizzo di "RefersTo".

    Se esiste altro metodo per fare questa cosa ben venga; grazie anticipatamente e buona giornata a tutti.

    Ciao Antonio

    Vediamo se ho capito.

    Mettiamo tu abbia il tuo elenco(tabella) in B2:B10 del Foglio1 e che a questo elenco(tabella) tu abbia asegnato il nome ElencoNomi.  Vuoi, aggiungendo o togliendo un valore all'elenco(tabella), che si aggiorni il riferimento celle/nome.

    Possiamo farlo automaticamente sfruttando l'evento Change oppure tramite macro da richiamare in qualche modo. In entrambi i casi, *non devono esserci righe vuote* nell'elenco(tabella).

    Vediamo l'evento. Il codice qui sotto va copia/incollato nel modulo di codice del foglio con l'elenco:

    Private Sub Worksheet_Change(ByVal Target As Range)

        On Error Resume Next

        Dim lRiga As Long

        If Target.Column = 2 Then

            lRiga = Me.Range("B" & Me.Rows.Count).End(xlUp).Row

            ThisWorkbook.Names.Add Name:="ElencoNomi", RefersTo:= _

                "=Foglio1!B2:B" & lRiga

        End If

        'La riga sotto con la MsgBox serve solo per farti vedere le modifiche,

        'non serve ad altro, da cancellare quando hai capito

        MsgBox [ElencoNomi].Address

    End Sub

    Grazie per l'attenzione e fai sapere se risolvi.

    La risposta è stata utile?

    0 commenti Nessun commento