Generalmente para estos tipos de búsqueda utilizo el Filtro Avanzado ya que es más rápido que recorrer la tabla buscando coincidencias.
En algún lugar de tu hoja ConstCol colocá el título de la col D. En mi ejemplo utilicé el rango M1:M2 (ver imagen)
Luego la macro la dejé en el Editor en el objeto HOJA Busqueda, para que se ejecute ni bien cambies el valor de la celda D12.
Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'se ejecuta al cambio en celda D12
If Target.Address <> "$D$12" Then Exit Sub
If Target.Value = "" Then Exit Sub
'se limpia el rango en hoja Búsqueda
If [B16] <> "" Then Range("B15:F" & Range("B" & Rows.Count).End(xlUp).Row).ClearContents
'se coloca el dato en el rango de criterios hoja Const
Set hor = Sheets("ConstCol")
hor.[M2] = Target.Value
'ult fila en tabla origen
finx = hor.Range("A" & Rows.Count).End(xlUp).Row
hor.Range("A1:F" & finx).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=hor.Range( _
"M1:M2"), CopyToRange:=hor.Range("AA1"), Unique:=True
'se copia sin los títulos si hubiese datos filtrados
If hor.[AA2] <> "" Then
hor.Range("AA2:AC" & hor.Range("AA" & Rows.Count).End(xlUp).Row).Copy Destination:= _
ActiveSheet.[B15]
Else
MsgBox "No se encontraron datos con este criterio."
End If
'limpia col de datos auxiliares
hor.Range("AA:AF").Clear
End Sub
Estoy utilizando un rango auxiliar en hoja Const.Col a partir de col AA que al terminar la macro se limpiará.