En teoría no, en la practica si que la hay. Al grano: la función Cells es mas rápida que Range.
Te explicare por que, y luego te lo demostraré.
A los lenguajes de programación les gustan mas los números que las letras DEFINITIVAMENTE.
A la función Cells se le pasan 2 integers, mientras que a Range se le pasa un String (todo lo que va entre comillas es un String) Así que, el compilador primero tiene que leer el String "A1" entender que significa esa A, darse cuenta que se refiere a la columna 1 y hacer la conversión correspondiente. Esos pasos se ahorran en la función Cells.
En un proyecto real, hecho por un programador serio, siempre veras Cells. El método Range solo debería usarse para motivos ilustrativos y educativos ya que es mas fácil de leer para personas que están aprendiendo.
Ahora te demostrare que lo que digo es correcto. Puedes comprobar cuanto demora cada método en ejecutar la misma tarea usando la siguiente macro y teniendo activa la Ventana Inmediata:
Sub test()
Dim cronometro As Double
Dim s As String
Dim i As Long
cronometro = Timer
For i = 1 To 10 ^ 5
s = Range("A1").Value
's = Cells(1, 1).Value
Next i
Debug.Print Timer - cronometro
End Sub
Primero comenta una de las lineas s = Cells... o s = Range... y descomenta la otra, ejecuta, luego invierte el comentario y vuelve a ejecutar. En la ventana inmediata mostrara los resultados en mili segundos. Estos son los míos que acabo de probar:
0.22 con Cells
0.39 con Range
PD: Si obtienes resultados que contradigan mi teoría déjame saber jajaja
Andy
Muy bueno! en mi caso dio 0.5846 con Cells y 0.8216 con Range, por lo que otra conclusión que saco es que tengo una carreta :-D - Anónimo
Jaja gracias. Esta pequeña macro te puede servir para probar el rendimiento de una tarea programada de diferentes formas y saber cual tiene mejor resultado en cuanto a tiempo. - Andy Machin