find最后一行数据和autoFit的一切

我正在使用vb.net应用程序中的数据表中的数据在Excel中创build一个提取。 它正确提取一切。 现在,我正在尝试做一些devise工作,使它变得漂亮。 似乎我有一个问题可能是一件容易的事情,但由于某种原因,我不断收到下面的错误。

找不到types为“ApplicationClass”的公共成员“XlDirection”。

我的目标是在列A中find最后一行数据,然后将所有单元格从A4开始,然后在开始A4的所有列上执行.columns.autofit。我之所以这样做是因为单元格A1 – A3有一些长文本在他们的价值观,我希望他们像他们一样。

码:

Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet Dim _excel As New Microsoft.Office.Interop.Excel.Application wSheet = wBook.ActiveSheet() Dim lRow As Long With wSheet lRow = .Range("A" & .Rows.Count).End(_excel.XlDirection.xlUp).Row .Range("A4" & lRow).Columns.AutoFit() End With 

原来的错误是由于XlDirectionMicrosoft.Office.Interop.Excel 命名空间中的一个枚举 – 它不是Excel.Application的成员。 位_excel.XlDirection.xlUp应该是:

 Microsoft.Office.Interop.Excel.XlDirection.xlUp 

第二个问题是,你在这里build立的范围…

  lRow = .Range("A" & .Rows.Count).End(_excel.XlDirection.xlUp).Row .Range("A4" & lRow).Columns.AutoFit() 

…只是将行号附加到“A4”的末尾。 所以如果最后一行是42,那么你自动适应的范围就是“A442”。 它需要是("A4:A" & lRow)

但是,这仍然只是自动适合列A,如果这是你的意图,请停在这里。 如果您需要自动适合所有列(如“所有开始A4”所示 – 我强调),请继续阅读。

首先,你不需要find最后一个行号 – 当你执行自动拟合时,你正在使用Columns ,所以Rows.Count和其他的一样。 你真的需要find最右边的 ,但我会跳过这一切,只是将使用的范围偏移3行:

 With wSheet .UsedRange.Offset(3).Columns.AutoFit End With