Hace algunas semanas tuve que recordar un poco de historia de Excel, ya que tenía que controlar algunas rutinas en función a la versión de Excel con la que trabajaban diferentes usuarios. Asi que decidí explicar algunas formas de obtener el número de versión de Excel (y alguna otra información) y mostrar un ejemplo sencillo de como dirigir y controlar un proceso en VBA según la versión de trabajo.
Me centraré en las versiones para Windows, ya que las versiones MAC van por otro lado...
En primer lugar veremos la forma manual de conocer la versión de tu Excel.
Para ello accederemos, en Excel 2007, al botón de Office > Opciones de Excel > Recursos > Acerca de..., para más detalle pulsaremos el botón de Acerca de:
>p align="center">
Si trabajas en Excel 2010 busca esta información en el menú Archivo > Ayuda > Acerca de:
Recordaré ahora el historial de versiones de Excel para Windows:
Versión 2.0 = Excel 2 (1987)
Versión 3.0 = Excel 3 (1990)
Versión 4.0 = Excel 4 (1992)
Versión 5.0 = Excel 5 (1993)
Versión 7.0 = Excel 95
Versión 8.0 = Excel 97
Versión 9.0 = Excel 2000 (Office XP)
Versión 10.0 = Excel 2002
Versión 11.0 = Excel 2003
Versión 12.0 = Excel 2007
Versión 14.0 = Excel 2010
Versión 15.0 = Excel 2013
Para conocer nuestra versión y otros detalles, incluso del sistema, podemos aplicar una sencilla macro:
En mi caso este es el mensaje mostrado:
Para emplear y poder dirigir procedimientos en nuestras macros según la versión de trabajo del usuario podríamos emplear esa propiedad .version, pero como el valor devuelto es una cadena de texto, no olvidemos anidarlo dentro de una función VAL de VBA:
Me centraré en las versiones para Windows, ya que las versiones MAC van por otro lado...
En primer lugar veremos la forma manual de conocer la versión de tu Excel.
Para ello accederemos, en Excel 2007, al botón de Office > Opciones de Excel > Recursos > Acerca de..., para más detalle pulsaremos el botón de Acerca de:
>p align="center">
Si trabajas en Excel 2010 busca esta información en el menú Archivo > Ayuda > Acerca de:
Recordaré ahora el historial de versiones de Excel para Windows:
Versión 2.0 = Excel 2 (1987)
Versión 3.0 = Excel 3 (1990)
Versión 4.0 = Excel 4 (1992)
Versión 5.0 = Excel 5 (1993)
Versión 7.0 = Excel 95
Versión 8.0 = Excel 97
Versión 9.0 = Excel 2000 (Office XP)
Versión 10.0 = Excel 2002
Versión 11.0 = Excel 2003
Versión 12.0 = Excel 2007
Versión 14.0 = Excel 2010
Versión 15.0 = Excel 2013
Para conocer nuestra versión y otros detalles, incluso del sistema, podemos aplicar una sencilla macro:
Sub Conocer_Version() Dim Vers As String 'controlamos qué versión es la de nuestra aplicación Excel abierta.. Select Case Application.version Case "2.0": Vers = "Excel 2 (1987)" Case "3.0": Vers = "Excel 3 (1990)" Case "4.0": Vers = "Excel 4 (1992)" Case "5.0": Vers = "Excel 5 (1993)" Case "7.0": Vers = "Excel 95" Case "8.0": Vers = "Excel 97" Case "9.0": Vers = "Excel 2000 (Office XP)" Case "10.0": Vers = "Excel 2002" Case "11.0": Vers = "Excel 2003" Case "12.0": Vers = "Excel 2007" Case "14.0": Vers = "Excel 2010" Case "15.0": Vers = "Excel 2013" Case Else: Vers = "Otras versiones de Excel...." End Select 'mostramos información With Application MsgBox Vers & vbCr & "Versión:= " & .version & " Número de versión:= " & .Build & vbCr & _ "Nombre y número de versión del sistema operativo actual:= " & .OperatingSystem End With End Sub
En mi caso este es el mensaje mostrado:
Para emplear y poder dirigir procedimientos en nuestras macros según la versión de trabajo del usuario podríamos emplear esa propiedad .version, pero como el valor devuelto es una cadena de texto, no olvidemos anidarlo dentro de una función VAL de VBA:
Sub SegunVersion() 'en este ejemplo controlo si la versión es anterior a Excel 2007 If Val(Application.version) < 12 Then MsgBox ".xls" Else MsgBox ".xlsx" End If End Sub
TENGO UN PROBLEMA.
ResponderEliminarTENGO ESTA MACROS QUE COPIA SEGUN CUMPLA CRITERIO LA CELDA Y ME COPIA 2 COLUMNAS EN CASO DE SER AFIRMATIVO, PERO QUIERO MODIFICARLA A QUE NO ME COPIE SOLO UNA CELDA ESPECIFICA SINO UNA FILA DELIMITADA COMO LO PUEDO HACER???
ME PUEDES AYUDAR POR FAVOR..
MANDO EL CÓDIGO
Sub chequea()
Application.ScreenUpdating = False
Hoja2.Select
i = 4
For i = 4 To 67
If Cells(i, 5).Value > 0 Then
valor1 = Cells(i, 1)
valor2 = Cells(i, 5)
Hoja3.Select
If Range("A6") <> "" Then
Range("A100").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell = valor1
ActiveCell.Offset(0, 2) = valor2
Hoja2.Select
Else
Range("A6").Select
ActiveCell = valor1
ActiveCell.Offset(0, 2) = valor2
Hoja2.Select
End If
End If
Next i
Application.ScreenUpdating = True
End Sub
Hola Yonatan,
Eliminarpodrías emplear en lugar de Cells
Rows(i &":"& i)
Es complicado darte más pistas, pues no visualizo qué quieres copiar donde... y a qué filas te refieres.
En el código veo que recorres la columna E de la fila 4 a 67, y en aquellos casos que el valor de la celda sea positivo, trasladas el valor de la celda Ax y Ex a la última celda libre de la hoja 3... pero se me escapa que fila querrías copiar.
Espero mi indicación inicial te pueda orientar.
Slds cordiales