如何在一行中find一个值并返回VBA的列号?

我的excel表单中填充了零,除了每行中的一个单元格。
我想find那个单元格并返回列。
例如:单元格T616中的值不是0,可能是-15400。
我想根据行(616)find该单元格(T616),并返回列(T)。 可能它甚至在MsgBox中。
这是我的许多尝试和长期的谷歌会议的结果:

Public Function find_Column(lRange As Range, lValue As String) As Integer Dim vCell As Range For Each vCell In lRange.Cells If vCell.Value = lValue Then find_Column = vCell.Column MsgBox (find_Column) Exit Function End If Next vCell End Function 

我发现这个代码的地方,并修改了一点,但我不记得在哪里。 所以感谢创造者!
如何search0以外的数字?
我对VBA比较陌生,并不知道自己在做什么。 对不起,我的英语不好(外国人)。 我会很感激任何帮助。 谢谢!

<>符号是“不等于”的比较。 所以如果你想检查一个单元格是否不等于0,你会写

 If vCell.Value <> 0 Then ... ' rest of code here 

在你的问题:

 Public Function find_Column(lRange As Range) As Integer Dim vCell As Range For Each vCell In lRange.Cells If vCell.Value <> 0 Then find_Column = vCell.Column MsgBox (find_Column) Exit Function End If Next vCell End Function 

另外,因为你只是检查0,你不会需要额外的lValue As String参数。

尝试这个:

 Public Function findNonZeroValueInColumn(lRange As Range) As Integer Dim vCell As Range For Each vCell In lRange.Cells If vCell.Value <> 0 Then find_Column = vCell.Column Exit Function End If Next vCell End Function Sub ShowValue() call MsgBox(findNonZeroValueInColumn(Range("A:A"))) End Sub 

请记住函数应该返回值。 子(程序)不返回值。

由于您的问题的其他部分已被回答,而我正在打字,如果你想要返回列字母,而不是数字…

 find_Column = Replace(Replace(vCell.Address, vCell.Row, ""), "$", "") 

如果这是你想要的函数返回,你将不得不改变你的函数返回到string的types