找到包含数据的最后一行并自动完成所有操作

时间:2016-12-09 16:16:18

标签: excel vb.net

我正在Excel中使用来自我的vb.net应用程序中的数据表的数据创建一个提取。它正确地提取一切。现在我正在尝试做一些设计工作,以使它完美。看起来我遇到的问题很可能很容易,但由于某些原因我不断收到以下错误。

  

找不到类型'ApplicationClass'上的公共成员'XlDirection'。

我的目标是找到A列中的最后一行数据,然后将所有单元格从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

1 个答案:

答案 0 :(得分:2)

原始错误是由于XlDirection是<{1}} 名称空间中的Microsoft.Office.Interop.Excel枚举,因此它不是Excel.Application的成员。位_excel.XlDirection.xlUp应为:

Microsoft.Office.Interop.Excel.XlDirection.xlUp

第二个问题是你在这里建立的范围......

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

...只需将行号附加到&#34; A4&#34;的末尾。因此,如果最后一行是42,那么您自动适应的范围将是&#34; A442&#34;。它必须是("A4:A" & lRow)

但这仍然只是自动适合A栏。如果这是你的意图,请停在这里。如果您需要自动调整所有列(如短语&#34所示;所有 从A4和#34开始; - my强调),继续阅读。

首先,您不需要查找最后一个行号 - 当您执行自动调整时,您正在使用,所以{{1和其他任何东西一样。你真的需要找到最右边的,但是我会跳过所有这些并将使用范围向下偏移3行:

Rows.Count