Saltar al contenido

Función que devuelva la referencia de la columna


Recommended Posts

publicado

Hola a todos,

 

Me gustaría preguntar si alguien tiene desarrollada una función tal que cuando el usuario introduzca un número cualquiera, entonces la función devuelva la referencia de la columna asociada a ese número.

Algo así, por ejemplo:

 

Function ReferenciarColumnas(numero As Integer) As String

Application.ScreenUpdating = False

   ' Limpiamos los errores anteriores (por si acaso)...
   Err.Clear

   ' Tratamos los errores de la función...
   On Error Resume Next

   ' Si el número introducido no es válido, entonces...
   If numero <= 0 Or numero > 16384 Then
      ' Notificamos al usuario con un mensaje de error...
      MsgBox "El número introducido no es válido." & vbCr & _
             "Por favor, el número introducido debe estar comprendido entre los valores 1 y 16384."
   ' En caso contrario...
   Else
      ' Notificamos al usuario con un mensaje de confirmación...
      MsgBox Chr(numero + 64)
   End If

End Function

 

El problema es cuando el usuario introduce un valor superior a 26, ya que supera la letra "Z".

Y habría que empezar otra vez desde la columna "A", pero añadiéndole la siguiente letra al final.

Es decir,

Número: 27 ---> Columna: AA

Número: 28 ---> Columna: AB

Número: 29 ---> Columna: AC

... y así sucesivamente, hasta llegar a la columna XFD.

 

Esta es la típica función que ya está desarrollada.

Por eso, pregunto por el foro a ver si alguien se anima a compartirla conmigo.

 

Gracias por vuestro tiempo.

publicado
En 23/7/2021 at 17:46 , Antoni dijo:
letras = Split(Columns(número).Address, "$")(2)

 

Gracias @Antoni.

 

Así quedaría definida la función (por si a alguien le interesa):

Function ReferenciarColumnas(numero As Integer) As String

Application.ScreenUpdating = False

   ' Tratamos los errores de la función...
   On Error Resume Next

   ' Declaramos las variables de ámbito local...
   Dim letras As Variant
   letras = Split(ThisWorkbook.ActiveSheet.Columns(numero).Address, "$")

   ' Si el número introducido no es válido, entonces...
   If numero <= 0 Or numero > 16384 Then
      ' Notificamos al usuario con un mensaje de error...
      MsgBox Prompt:="Upps, parece que hubo un error... Por favor, el número introducido debe estar " & _
                     "comprendido entre los valores 1 y 16384.", _
             Title:="NUMERO INCORRECTO"
   ' En caso contrario...
   Else
      ' Referenciamos el número de columna...
      ReferenciarColumnas = letras(2)
   End If

End Function

 

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.