使用vb.net检测excel表中的第一个完整单元格

时间:2015-03-07 18:47:30

标签: vb.net excel

我想找到第一个包含数据的单元格。 我使用此代码但它不起作用。 我在选择'。

中收到错误
Range("A1:BN1").Select
y = Selection.Find("*", After:=Range(Selection(1, 1).Address), LookIn:=xlValues).Column

来自OP的评论:

我tyr [sic] 这个

With xlWorkSheet
    lastrow = .Cells(.Rows.Count, 1).End(Excel.XlDirection.xlDown).Row
    lastcol = .Cells(1, .Columns.Count).End(Excel.XlDirection.xlToRight).Column
End With

2 个答案:

答案 0 :(得分:0)

可以在

中找到A列中包含数据(即非空白)的第一个单元格
Cells(1, 1).End(xlDown)

答案 1 :(得分:0)

看起来您想要的只是一个数字,表示第一行中第一个值的列索引。如果您想要第一个,则必须在最后一个之后查看下一个。如果您在Selection(1, 1)之后查找下一个,那么如果Selection(1, 1)不为空,您将获得第二个。

Dim y As Long '◄ note: a long, not a range
With Range("A1:BN1")
    y = .Find("*", After:=.Cells(.Rows.Count, .Columns.Count), LookIn:=xlValues).Column
End With
Debug.Print y

这是获得没有选择的列索引号的(更好)方法。如果您认为必须继续使用Selection,那么您的代码将更接近以下内容。

Dim y As Long
Range("A1:BN1").Select
y = Selection.Find("*", After:=Selection(Selection.Rows.Count, Selection.Columns.Count), LookIn:=xlValues).Column
Debug.Print y

您正在获取选择的地址并将其转换回Range(...)的范围对象,因此我在此过程中删除了一些操作。

<强>附录:

您的注释表明您希望单元格或整个列具有第1行中的第一个值。如果是这种情况,那么这更合适。

Dim y As Range '◄ note: now a range
With Range("A1:BN1")
    Set y = .Find("*", After:=.Cells(.Rows.Count, .Columns.Count), LookIn:=xlValues)  '◄ note no .Column at the end
End With
Debug.Print y.Address
Debug.Print y.EntireColumn.Address