Pon el siguiente código en los eventos de la Hoja1.
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- En el panel del lado derecho copia la macro
---
Cada que actualices los valores en la columna C de la hoja1, en automático se actualizará la lista desplegable de la hoja2, celda D10.
---
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, c As Range
Dim dic As Object
Dim i As Long
'
Set dic = CreateObject("Scripting.Dictionary")
Set rng = Intersect(Target, Range("C2:C" & Rows.Count))
If Not rng Is Nothing Then
For Each c In Range("C2", Range("C" & Rows.Count).End(3))
If c.Value <> "" Then dic(c.Value) = Empty
Next
'
If dic.Count > 0 Then
With Sheets("Hoja2").Range("D10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=Join(dic.keys, ",")
.IgnoreBlank = True
.InCellDropdown = True
.ErrorTitle = "Valor no válido"
.ErrorMessage = "El usuario sólo puede introducir ciertos valores"
.ShowInput = True
.ShowError = True
End With
End If
End If
End Sub