Come posso automatizzare la creazione di riferimenti con nome in Excel? Voglio che il primo campo di ogni riga sia il mio riferimento

StackOverflow https://stackoverflow.com/questions/627377

  •  06-07-2019
  •  | 
  •  

Domanda

La prima colonna del mio foglio di calcolo è una chiave univoca (per quanto riguarda i dati, niente a che fare con Excel). Un'altra delle mie colonne contiene collegamenti ad altre righe (alla chiave univoca di quella riga). Quando inserisco questi collegamenti ipertestuali, devo puntare a " nomi definiti " poiché l'ordine delle righe cambierà nel tempo.

Non voglio creare il nome definito ogni volta che inserisco una nuova riga. C'è un modo per definire automaticamente il testo di una colonna come "nome definito"?

Spero sia chiaro.

Mille grazie.

È stato utile?

Soluzione 2

Capito. Mike R. mi ha messo sulla strada giusta. Grazie.

Nota la necessità di rimuovere caratteri non alfanumerici per i nomi. Inoltre, la duplicazione di un nome sovrascrive il vecchio riferimento.

Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Column = 1 And Target.Text <> "" And Target.Cells.Count = 1) Then
        ThisWorkbook.Names.Add _
            Name:=StripChar(Target.Text), _
            RefersTo:=Target, _
            Visible:=True
    End If
End Sub

Function StripChar(s As String) As String
    With CreateObject("vbscript.regexp")
        .Global = True
        .ignorecase = True
        .Pattern = "[^\dA-Z]"
        StripChar = .Replace(s, "")
    End With
End Function

Altri suggerimenti

Dovresti esaminare Workbook.Names o Worksheet.Names (se desideri limitare il nome definito al foglio di lavoro).

Gli esempi mostrati nei link sopra sono abbastanza buoni. Nel tuo caso, vorrai utilizzare Range.Value o Range.Text trovato nella cella da utilizzare come stringa passata come argomento 'Name' per il metodo Names.Add ().

Usando VBA potrebbe essere simile a questo:

ThisWorkbook.Names.Add _
    Name:=Sheet1.Range("A1").Text, _
    RefersTo:=Sheet1.Range("A:A"), _
    Visible:=True 

Quanto sopra imposta il nome definito per la colonna A come valore (testo) trovato nella cella di intestazione A1.

Spero che questo aiuti!

Mike

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top