2011-01-31 13 views

Respuesta

8

Tomado de here, esto va a seleccionar todas las celdas en la hoja de trabajo:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column 
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row 
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select 
+0

+1: muchas gracias por el enlace – horgh

2

No he hecho ninguna sobresalen desarrollo por un tiempo (Excel 2003), pero siempre encontró que la grabación de una macro mientras se realiza la las tareas que quería implementar en el código tienen indicadores suficientes para ayudar.

En este caso, la selección de todas las células y autofitting da el código:

Sub Macro1() 
    Cells.Select 
    Cells.EntireColumn.AutoFit 
End Sub 

la que me imagino que más o menos se traducen en:

((Microsoft.Office.Interop.Excel.Range)_sheet.Cells.Select()).AutoFit(); 

donde _sheet es la instancia de la hoja de trabajo que' re usando (no probado)

2

Oficialmente, Excel.Worksheet.UsedRange.Rows y Excel.Worksheet.UsedRange.Columns.

En la práctica, tiene errores, debe restar la fila y la columna de inicio. La respuesta más cercana-a-correcta es:

Public ReadOnly Property LastColumn() As Integer 
     Get 
      Return ExcelWorksheet.UsedRange.Columns.Count + _ 
        ExcelWorksheet.UsedRange.Column - 1 
     End Get 
    End Property 
    Public ReadOnly Property LastRow() As Integer 
     Get 
      Return ExcelWorksheet.UsedRange.Rows.Count + _ 
        ExcelWorksheet.UsedRange.Row - 1 
     End Get 
    End Property 

Esto devuelve al menos todas las células utilizadas, a veces un poco más. El "poco más" puede deberse a celdas en blanco (en lugar de vacías) y otras cosas al azar. Forma la investigación que hice, esto es lo mejor que se puede hacer.

Si realmente desea seleccionar todo continuación

ExcelWorksheet.Activate() 
ExcelWorksheet.Cells.Select() 
1

mucho más limpio y no depende de la cantidad de filas/cols que se incrementó en Excel 2007:

Siempre y cuando su hoja es en una variable llamada wsData:

wsData.Range(wsData.Cells(1, 1), wsData.Cells(wsData.Rows.Count, wsData.Columns.Count)) 
+1

Para mí wsData.Rows.Count siempre devuelve 65536 en lugar de filas usadas FYI –

10
public void refreshSheetColumsSize(Worksheet ws) 
{ 
    ws.get_Range("a1").EntireRow.EntireColumn.Select();   
} 
+1

Se ve bien, pero tengo esta excepción 'No se puede convertir implícitamente el tipo 'bool' en 'Microsoft.Office. Interop.Excel.Range'' – Yola

+0

get_range debe devolver un rango y no un bool: https://msdn.microsoft.com/fr-fr/library/microsoft.office.tools.excel.worksheet.get_range.aspx call ws. get_Range ("a1"); en una fila separada y depurar el resultado. – jocelyn

+1

eliminando 'Seleccionar()' lo hará. Estaba recibiendo la misma excepción que Yola. Quiero decir, crea un método que devuelva un 'Rango' y devuelve' get_Range ("a1"). EntireRow.EntireColumn' – Veverke

6
Excel.Range theRange = (Excel.Range)CurrentSheet.UsedRange; 

En este ejemplo, CurrentSheet es la variable donde ha almacenado la hoja que está utilizando actualmente.

0

Considerar todas las celdas de una hoja de cálculo se puede escribir como:

workSheet.Cells[workSheet.Rows.Count,workSheet.Columns.Count] 

O

workSheet.get_Range("A1","IV65536") 

Considerar células utilizadas de una hoja de cálculo, se puede escribir:

workSheet.Rows.SpecialCells(XlCellType.xlCellTypeLastCell, XlSpecialCellsValue.xlTextValues) 

Donde "hoja de trabajo" representa la hoja en la que está trabajando. Ambos ejemplos de código devuelven un rango.

Espero que ayude!

0

muy simple:

xlWorkSheet.UsedRange.Columns.Select() 
0
worksheet.Columns.AutoFit() 

Donde "hoja de trabajo" es una variable de tipo Worksheet

0
 xlWorksheet.get_Range("a1").EntireRow.EntireColumn.AutoFit(); 
     xlWorksheet.get_Range("a1").EntireColumn.EntireRow.AutoFit(); 

Después de Relleno de la célula se ha terminado.

Cuestiones relacionadas