Soy relativamente nuevo en el código VBA dentro de Excel, así que perdóneme si la respuesta es simple (espero que generalmente lo sea). Estoy usando Excel 2010, como referencia. Estoy tratando de lograr lo siguiente, con el script siguiente:
Si se ingresa una cadena de números (cualquier valor) en cualquier celda dentro de la Columna D, necesito que esto se convierta automáticamente en un Hyerlink que anexe una determinada cadena de dirección antes del valor de la celda objetivo, y escupe un nombre descriptivo que incluya la celda valor.
En otras palabras, aquí está el ejemplo de la función de Excel que intento replicar con una macro:
=HYPERLINK("http://stprs553/tickets/list/single_ticket/293136","Ticket #293136")
O, más específicamente (debería pintar una imagen más clara):
=HYPERLINK(CONCATENATE("http://stprs553/tickets/list/single_ticket/","Target_Cell_Data"),"Ticket #Target_Cell_Data")
293136 es la cadena de números de ejemplo que quiero que un usuario pueda escribir en cualquier celda dentro de la Columna D. Cuando lo hagan, quiero que esta celda se convierta en un hipervínculo, usando la cadena de números como datos base, agregando el resto de la URL a la izquierda del valor de la celda, luego cree un nombre descriptivo que concatene "Ticket #" con la cadena de número del valor de la celda. No quiero que mis usuarios tengan que aprender fórmulas de Excel para tener un enlace de referencia, o perder el tiempo teniendo que copiar ambos extremos de la función para ajustar los datos de la celda.
Esto es lo que tengo hasta ahora en VBA:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rangeLimit As Range
Set rangeLimit = Range("D:D")
If Not Intersect(rangeLimit, Target) Is Nothing Then
If Target <> "" Then
Target.Hyperlinks.Add Anchor:=Target, Address:="http://stprs533/tickets/list/single_ticket/" & c.Value, TextToDisplay:="Ticket #" & c.Value, Target.Value
End If
End If
End Sub
Aquí están los problemas con los que me encuentro:
1.) Si trato de ejecutar la fórmula tal como está, me sale un error de compilación. 2.) Si elimino el , Target.Value
final de la cadena de hipervínculo, aparece el error 424, error "Objeto requerido".
¿Qué estoy haciendo mal y / o cómo puedo crear una macro para realizar la función deseada? Una buena hora sólida de búsqueda en Google y echar un vistazo a algunas publicaciones de StackOverflow me llevó a lo que tengo ahora, que todavía no funciona.
TextToDisplay
que sea algo diferente al número en sí mismo. Target.Value
regresará TextToDisplay
y si incluye texto que no sea el número, obtendrá un nuevo hipervínculo.
Worksheet_Change
evento. Es posible que desee agregar un cheque que elTarget.Characters.Count < 10
o algún otro número para evitar la creación repetida de hipervínculos.