Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Compación entre Range y Cells

| 5 comentarios

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

5 comentarios

  1. 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!!

    • 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!

  2. Muy buena explicacion,

  3. 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?

  4. 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

Deja una respuesta

Los campos requeridos estan marcados con *.