2011-01-31 60 views

Trả lời

8

Taken từ here, điều này sẽ chọn tất cả các ô trong bảng tính:

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: cảm ơn nhiều vì liên kết – horgh

2

Tôi đã không thực hiện bất kỳ xuất sắc phát triển trong một thời gian (Excel 2003) nhưng tôi luôn thấy rằng ghi một macro trong khi thực hiện công việc tôi muốn thực hiện trong mã có đủ con trỏ để trợ giúp.

Trong trường hợp này, chọn tất cả các tế bào và autofitting cho mã:

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

mà tôi sẽ tưởng tượng khoảng sẽ dịch để:

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

nơi _sheet là trường hợp của Worksheet bạn' tái sử dụng. (chưa được kiểm tra)

2

Chính thức, Excel.Worksheet.UsedRange.Rows và Excel.Worksheet.UsedRange.Columns.

Trong thực tế, đó là lỗi, bạn phải trừ hàng và cột bắt đầu. Câu trả lời gần nhất-to-đúng là:

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 

này trả ít nhất tất cả các tế bào sử dụng, đôi khi nhiều hơn một chút. 'Ít hơn' có thể là do các ô trống (thay vì trống), và những thứ ngẫu nhiên khác. Hình thành nghiên cứu tôi đã làm, đây là điều tốt nhất có thể thực hiện được.

Nếu bạn thực sự muốn chọn mọi thứ sau đó

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

sạch hơn và không phụ thuộc vào số lượng hàng/cols đã được tăng lên trong Excel 2007:

Cung cấp tờ của bạn là trong một biến gọi là wsData:

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

Đối với tôi wsData.Rows.Count luôn trả lại 65536 thay vì hàng đã sử dụng FYI –

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

Có vẻ đẹp, nhưng tôi có ngoại lệ này 'Không thể chuyển đổi kiểu' bool 'thành' Microsoft.Office '. Interop.Excel.Range'' – Yola

+0

get_range phải trả về phạm vi và không phải là bool: https://msdn.microsoft.com/fr-fr/library/microsoft.office.tools.excel.worksheet.get_range.aspx gọi ws. get_Range ("a1"); trong một hàng riêng biệt và gỡ lỗi kết quả. – jocelyn

+1

xóa 'Chọn()' sẽ thực hiện. Tôi đã nhận được ngoại lệ tương tự như Yola. Tôi có nghĩa là, tạo ra một phương thức trả về một 'Range' và trả về' get_Range ("a1"). EntireRow.EntireColumn' – Veverke

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

Trong ví dụ này, CurrentSheet là biến mà bạn đã lưu trữ trang tính hiện đang sử dụng.

0

Để xem xét tất cả các tế bào của một bảng tính bạn có thể viết như sau:

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

HOẶC

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

Xem xét các tế bào sử dụng của một bảng tính, bạn có thể viết:

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

Nơi "bảng tính" đại diện cho trang tính bạn đang làm việc. Cả hai mẫu mã trả về một phạm vi.

Hy vọng điều đó sẽ hữu ích!

0

Rất đơn giản:

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

đâu "bảng" là một biến kiểu Worksheet

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

Sau khi điền tế bào đã được hoàn tất.

Các vấn đề liên quan