Rango variable en las celdas con hipervínculo

Private Sub BtnAceptar_Click()
Dim n As Integer, nFila As Integer, nUltimaFila As Integer
Dim nFilaXLS As Integer, nFilaComienzoTabla As Integer
Dim sNombreMaterial As String
Dim hiper As Variant
Dim nombre As Variant
Dim exten As Variant
Dim buscador As Variant
Dim celda As Range
Dim i As Long
On Error Resume Next
'La fila donde comienza la tabla en la hoja excel
nFilaComienzoTabla = 7
sNombreMaterial = TextBox1.Text
'1. Comprobamos que se ha escrito el nombre del material
If Trim(sNombreMaterial) = "" Then
 MsgBox "Escribe el nombre del material a ingresar", vbInformation
 Exit Sub
End If
'2. Comprobamos que se ha seleccionado una fila de la lista
If LIS.ListIndex = 0 Then
 MsgBox "Selecciona donde quieres ingresar", vbInformation
 Exit Sub
End If
'3. Comprobamos que se haya seleccionado un elemento de la lista
 If Not ElementosSeleccionados() Then
 MsgBox "Debes seleccionar algún elemento de la lista", vbInformation
 Exit Sub
 End If
'4 Comprobamos que el material no este en la lista
nUltimaFila = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For nFila = nFilaComienzoTabla To nUltimaFila
 If LCase(Cells(nFila, 2).Text) = LCase(sNombreMaterial) Then 'es igual a lo ingresado
 MsgBox "El material ya existe", vbInformation
 Exit Sub
 End If
Next
'Creamos el hipervinculo
buscador = "Archivo Word (*.docx),*.docx , Archivo PDF (*.pdf),*.pdf , Archivo word (*.doc),*.doc,"
hiper = Application.GetOpenFilename(buscador, , "Seleccione Archivo ")
If hiper = "" Or hiper = False Then
 MsgBox "Selección erronea", vbCritical, "ERROR"
 Exit Sub
 End If
 With CreateObject("Scripting.FileSystemObject")
 nombre = .getfile(hiper).Name
 exten = .GetExtensionName(hiper)
 i = Len(exten) + 1
 exten = nombre
 nombre = Left(nombre, Len(nombre) - i)
 End With
 Set celda = Range("d11")
 If celda Is Nothing Then
 MsgBox "Selección erronea", vbCritical, "ERROR"
 Exit Sub
 End If
 With celda
 .Value = nombre
 ActiveSheet.Hyperlinks.Add Anchor:=celda, Address:=hiper, ScreenTip:="Abrir " & exten, TextToDisplay:=nombre
 End With
 Set celda = Nothing
 MsgBox "Hipervinculo creado satisfactoriamente", vbInformation, ""
'5. Obtenemos la fila de la hoja excel que queremos ingresar
nFilaXLS = nFilaComienzoTabla + LIS.ListIndex
'7. Escribimos el nuevo material
 Cells(nFilaXLS, 2) = sNombreMaterial
'8. Recargamos la lista de materiales
CargarLista
End Sub

hola a todos:
como podrán ver en este código, mi idea es poder ingresar datos y que estos contengan un hipervínculo hacia otro documento, pero lo que no e podido lograr es que el rango de la celdas sea variable como podrán ver en esta parte del código "Set celda = Range("d11")" solo puedo ingresar datos en esa celda y no ingresar en la celda que yo selecciono, ahora solo me ingresa el item pero sin el hipervínculo ...
no se si se entiende la idea ,,, ojala me puedan ayudar
desde ya muchas gracias

1 Respuesta

Respuesta
1

¿Y cómo seleccionas la celda?

Quieres que se ponga el hipervículo en la celda activa, es decir, ¿en la celda donde está tu cursor?

Cambia esta línea

Set celda = Range("d11")

por esta

Set celda = ActiveCell

Si quieres que vaya en otra celda, me tienes que decir cuál es la referencia que quieres, ¿quieres qué sea en la columna D? ¿Pero diferente fila? ¿Y cómo puedo saber cuál fila? ¿Con qué datos puedo determinar la fila? Y así puedo crear el código. Si es con la relación de esta instrucción de tu macro:

'7. Escribimos el nuevo material
Cells(nFilaXLS, 2) = sNombreMaterial

Entonces tienes que pasar el código del hipervínculo después de esta línea "7" y cambiar esta línea

Set celda = Range("d11")

Por esta

Set celda = Range("d" & nFilaXLS)

Saludos. Dam
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas