我想找到第一个包含数据的单元格。 我使用此代码但它不起作用。 我在选择'。
中收到错误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
答案 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