Cómo llamar a la función de compensación en VBA, ¡urgente!
Rango("Resultado").ClearContents
Dim?Mat1()
Dim?Mat2()
Mat2?=?Range("B3:U62")
Para?i?=?1?to?48
Mat1?=?Range("B3:U62") .Offset(1,?0)
Aplicación.SendKeys?("{Enter}")
Rango("Resultado").Células(i?+?1,?2 )?=?ActiveSheet.Range("x_1")
¿Siguiente en lugar de la dirección del rango de celdas
Entonces Mat1 = Application.WorksheetFunction.Offset(Mat2, i, 0) , 60, 20) informará un error porque este desplazamiento requiere una dirección de celda. La descripción detallada del parámetro de desplazamiento es la siguiente:
OFFSET (referencia, filas, columnas, altura, ancho)
<. p>Referencia sirve como región de referencia para el sistema de referencia de compensación. referenciadebe ser una referencia a una celda o un rango conectado a una celda; de lo contrario, la función DESPLAZAMIENTO devuelve el valor de error #VALOR.
El número de filas desplazadas del sistema de referencia desde la esquina superior izquierda de la celda, el número de filas desplazadas hacia arriba (abajo). Si utiliza 5 como parámetro
Filas, significa que la celda de la esquina superior izquierda del área de referencia de destino está 5 filas debajo de la referencia. El número de filas puede ser positivo (es decir, debajo de la referencia inicial) o negativo (es decir, encima de la referencia inicial).
Cols El número de columnas desplazadas hacia la izquierda (derecha) en relación con la celda de la esquina superior izquierda del rango de referencia de desplazamiento. Si utiliza 5 como parámetro
Cols, significa que la celda de la esquina superior izquierda del área de referencia de destino está desplazada hacia la derecha en 5 columnas. El número de columnas puede ser positivo (que representa el lado derecho de la referencia inicial) o negativo (que representa el lado izquierdo de la referencia inicial).
Altura, es decir, el número de filas en el área de referencia que se devolverá.
Ancho ancho, es decir, el número de columnas del área de referencia a devolver; el ancho debe ser un número positivo.
Por ejemplo: OFFSET(C2,1,2,3,1))
Entonces, para hacer tu:
Mat1 = Application.WorksheetFunction.Offset (Mat2, i, 0, 60, 20) funciona bien y debería leerse
Mat1 = Application.WorksheetFunction.Offset(Mat2, i, 0, 60, 20) . WorksheetFunction.Offset(Range("B3:U62").address,i,0,60,20)
Pero VBA puede compensar utilizando su propio desplazamiento. Al igual que el código que le di,
La descripción de desplazamiento de VBA es la siguiente:
Devuelve un objeto Rango que representa un área fuera de un rango específico. Solo lectura.
expresión.Offset(RowOffset, ColumnOffset)
¿se debe completar la expresión? La expresión devuelve un objeto Range.
RowOffset?Variable
Tipo, opcional. El número de filas por las que se compensa la región (positiva, negativa o 0 (cero)). Un valor positivo indica un desplazamiento hacia abajo, un valor negativo indica un desplazamiento hacia arriba y el valor predeterminado es 0.
ColumnOffset?Variable
Tipo, opcional. El número de columnas (positivas, negativas o 0 (cero)) para el desplazamiento del rango. Un valor positivo significa un desplazamiento hacia la derecha, un valor negativo significa un desplazamiento hacia la izquierda y el valor predeterminado es 0.