Compación entre Range y Cells
Existe un par de maneras para acceder las celdas de nuestras hojas utilizando VBA. Podemos utilizar el objeto Range y también podemos utilizar el objeto Cells.
El objeto Cells tiene como primer argumento el número de fila y como segundo argumento el número de columna, el objeto no nos permite seleccionar un rango porque solamente podemos especificar una celda a la vez.
Cells(5, 2).Select
Para seleccionar un rango de celdas lo más conveniente es utilizar el objeto Range de la siguiente manera:
Range("A1:D5").Select
Establecer valor a las celdas con los 2 objetos señalados, ejemplo:
Range("B5").Value = 100
Cells(5, 2).Value = 200
Ventaja del objeto cell
El objeto Cells ofrece una ventaja que debemos considerar cuando necesitamos hacer un recorrido programático por varias celdas ya que será muy sencillo especificar las filas y columnas utilizando una variable numérica.
Ejemplo
Sub AZUL()
For i = 4 To 40
For j = 2 To 10
Cells(i, j).Value = i * j
Next j
Next i
End Sub
Elaborado por: Frank Alvarez Espinoza
23/08/2017 a las 4:48 pm
Ayuda por favor. Requiero mostrar un valor String en un TextBox1 mediante VLOOKUP al ingresar un primer valor String en otro TextBox2, pero me marca Runtime error 13 - Type mismatch cuando uso Application.Vlookup, o bien, me marca Runtime error 1004 - Unable to get Vlookup property of the WorkSheetFunction class. Uso Excel 2013, alguna idea? Aquí el código:
Private Sub CommandButton1_Click()
Dim cms As Variant
Dim v As Variant
Dim myrange As Range
Set myrange = Sheet2.Range("A1:J2")
cms = TextBox1.Value
If Len(cms) > 0 Then
v = Application.WorksheetFunction.VLookup(cms, myrange, 9, 0)
TextBox2.Value = CStr(myrange)
Else
MsgBox ("Cry...")
End If
End Sub
Gracias!!
22/11/2019 a las 1:43 pm
Hola el problema se encuentra en el cero de la función, deberías poner un uno,
Application.WorksheetFunction.VLookup(cms,myrange,9,1)
Con esto ya debe funcionar.
Saludos!
02/03/2021 a las 9:30 am
Muy buena explicacion,
07/01/2022 a las 7:52 pm
debo hacer una macro que me copie datos de varios exceles a uno general, la idea es que yo tengo el nombre de cada archivo y al ejecutarla me copia todo
Sub Macro5()
Dim cliente As String
Dim cont As Integer
For cont = 3 To cont = 20
cliente = Cells(cont, 1).Select
Application.Goto Workbooks("Hoja de vida - " & cliente & ".xlsx").Sheets("Hojamacro").Range(Cells(3, 2), Cells(3, 65)).Select
Selection.Copy
Workbooks("Libro1").Activate
Cells(cont, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
End Sub
pero no me sale nada.. alguien me puede ayudar?
15/05/2022 a las 4:09 pm
Buenas tardes tengo una macro que me dijo indica la fila en dónde está la fila de los datos lo hice con fila=dato.row y columna=dato.column funciona bien pero quiero que vaya a la línea indicada imagino con range pero estoy trancado al pasar fila y columna a número de fila y letra de la columna, ayuda por favor.gracias