我建立一个功能,找到列:Excel宏:找到列单元格中没有激活它
Function findColumn(NameSheet As String, ColName As String)
findColumn = 0
Worksheets(NameSheet).Select
Sheets(NameSheet).Range("A1").Select
Do Until ActiveCell.Value = ""
searchTerm = ActiveCell.Value
If (LCase(ActiveCell.Value) = LCase(ColName)) Then
findColumn = Mid(ActiveCell.Address, 2, 1)
Exit Do
End If
ActiveCell.Offset(0, 1).Activate
Loop
End Function
此功能!但它激活其他工作表,并且我必须返回到上一张工作表。结果并不是无缝的,因为当函数搜索列地址时,有一个表单转换的小故障。
有没有更好的方法来做到这一点?因为我多次使用这种方法,当单元格上的每次单击都出现故障时,我的合作伙伴不满意。
请帮
+ 1额外的错误处理+不使用'MID(ActiveCell.Address,2,1)'来得到列号:)你也可能要添加'Thisworkbook'之前每'表(NameSheet) ' –
@SiddharthRout - >'Mid(ActiveCell.Address,2,1)'不返回列号,而是列字母。如果OP要'A'而不是'1',这个findColumn函数将不起作用。我想我们都可以按照OP编写代码的方式假设不同的事情,即取决于我们是否认为findColum = 0更能指示OP后面的内容,而不是'Mid'公式。 –
@SiddharthRout,真的。我去更新它,然后改变了主意。很可能你希望它能在ThisWorkbook上工作,但是如果放在模块中,可以从不同的工作簿中调用它,在这种情况下它可以在当前工作簿上运行。我们总是可以扩展它以指定所需的工作簿,但这可能会过度呢? –