Buscamos por todo el mundo online y así mostrarte la solución para tu problema, si tienes dificultades deja tu duda y te responderemos con gusto, porque estamos para servirte.
Solución:
No estoy seguro de lo que estás tratando de hacer. Pero aquí hay algunos ejemplos.
Supongamos que tengo el siguiente rango:
Excel.Worksheet sheet = this.Application.ActiveSheet as Excel.Worksheet;
Excel.Range range = sheet.get_Range("A1", "B5") as Excel.Range;
Para mover su rango hacia abajo n
-número de fila:
int n = 1;
int rows = range.Rows.Count;
int cols = range.Columns.Count;
Excel.Range newRange = range.get_Offset(n, 0).get_Resize(rows-n,cols);
newRange.Select(); //will select the new range will be 1 row lower
Para mover la fila inferior hacia arriba
Excel.Range newRange = range.get_Resize(rows-n,cols);
newRange.Select(); //will select the new range will be 1 row higher
Supongo que puedes averiguar cómo moverlo de lado a lado.
get_Offset()
moverá todo el rango y luego deberá cambiar el tamaño del rango.
EDITAR: Ahora que sé lo que quieres.
Para seleccionar la última celda:
Excel.Range lastCell = range.Cells[rows, cols] as Excel.Range;
lastCell.Select();
Ahora puede usar su propio punto de partida así:
Excel.Range newRange = sheet.get_Range("B1", lastCell);
newRange.Select();
Ok, encontré una respuesta (después de casi 3 horas de búsqueda total, pregunté aquí 2 horas después), así que publicaré aquí para otros.
Excel.Range urange = (Excel.Range)xlWorkSheet.UsedRange; // gives us the actual range
string used = urange.get_Address(false, false, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
Desde MSDN:
public string get_Address (
[OptionalAttribute] Object RowAbsolute,
[OptionalAttribute] Object ColumnAbsolute,
[OptionalAttribute] XlReferenceStyle ReferenceStyle,
[OptionalAttribute] Object External,
[OptionalAttribute] Object RelativeTo)
que al parecer los dos primeros son true/false banderas, la siguiente se define como una Microsoft.Office.Interop.Excel.XlReferenceStyle
object, y supongo que External es una referencia a un archivo externo o una bandera de algún tipo. RelativeTo, solo puedo suponer que se refiere a una posición arbitraria definida, tal vez un objeto de rango, tal vez un string. Desafortunadamente, el MSDN es extremadamente escaso en este tema, así que solo estoy adivinando aquí y publicando mis conjeturas. Sin embargo, usando este código como lo publiqué, puedo recuperar el total usado como “A1: B245”, lo que me da exactamente lo que quiero, y luego puedo crear un nuevo rango extrayendo la segunda parte y luego puedo continúa en.
valoraciones y comentarios
Agradecemos que desees añadir valor a nuestra información asistiendo con tu experiencia en las acotaciones.