Excel 查找包含数据的最后一行并自动调整所有内容

Excel 查找包含数据的最后一行并自动调整所有内容,excel,vb.net,Excel,Vb.net,我正在Excel中使用vb.net应用程序中的datatable中的数据创建一个摘录。它可以正确地提取所有内容。现在,我正试图做一些设计工作,使它变得漂亮。似乎我对一些很简单的事情都有疑问,但出于某种原因,我一直得到下面的错误 找不到类型“ApplicationClass”上的公共成员“XlDirection” 我的目标是在列A中找到最后一行数据,然后在所有以A4开头的列上获取所有单元格并进行.columns.autofit。之所以这样做,是因为单元格A1-A3中有一些长文本值,我希望它们保持原

我正在Excel中使用vb.net应用程序中的datatable中的数据创建一个摘录。它可以正确地提取所有内容。现在,我正试图做一些设计工作,使它变得漂亮。似乎我对一些很简单的事情都有疑问,但出于某种原因,我一直得到下面的错误

找不到类型“ApplicationClass”上的公共成员“XlDirection”

我的目标是在列A中找到最后一行数据,然后在所有以A4开头的列上获取所有单元格并进行.columns.autofit。之所以这样做,是因为单元格A1-A3中有一些长文本值,我希望它们保持原样

代码:


原始错误是由于
XlDirection
Microsoft.Office.Interop.Excel
命名空间中的枚举-它不是
Excel.Application
的成员。位
\u excel.XlDirection.xlUp
应为:

Microsoft.Office.Interop.Excel.XlDirection.xlUp
第二个问题是你在这里建立的范围

…只需在“A4”的末尾追加一个行号即可。因此,如果最后一行是42,则自动拟合的范围将是“A442”。它必须是
(“A4:A”&lRow)

但这仍然只适用于A列。如果这是你的意图,就到此为止。如果您需要自动调整所有列(如短语“allcolumnsstarting A4”-我的重点所示),请继续阅读

首先,您不需要查找最后一个行号-在执行自动拟合时,您正在处理列,因此
Rows.Count
与其他任何操作一样有效。您确实需要找到最右边的列,但我将跳过所有这些,只需将使用的范围向下偏移3行:

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

XlDirection
不是应用程序的成员,而是命名空间的成员。只需在对象浏览器中查看。@comintern-我已在引用中检查了Micorosft Excel 12.0,但在同一个函数中,我将DataTable作为参数传递,它表示DataTable是一个模棱两可的名称……我不确定这与问题有何关系
\u excel.XlDirection.xlUp
应该是
Microsoft.Office.Interop.excel.XlDirection.xlUp
。这似乎可以接受,但范围部分没有问题,因为它仍然不能自动适应@Comintern
 lRow = .Range("A" & .Rows.Count).End(_excel.XlDirection.xlUp).Row
 .Range("A4" & lRow).Columns.AutoFit()
With wSheet
     .UsedRange.Offset(3).Columns.AutoFit
End With