VBA循环通过列 – 如果在里面
这段代码有什么问题? 它应该返回find“1”的列的标题(第一行)。 我传递行号(nr),它应该在M和T列之间(包括)
Function who(ByVal rowNr As Integer) As String Dim temp As String Dim ws As Worksheet With ActiveSheet Set ws = ActiveWorkbook.Sheets(.Name) End With For i = 13 To 20 Step 1 If ws.Cells(i, rowNr).Value = 1 Then temp = temp & " " & ws.Cells(i,1).Value End If Next i who = temp End Function
我得到的错误是
应用程序定义的或对象定义的错误
并标记线
If ws.Cells(i, nr).Value = 1 Then
我真的不喜欢VB。
如果使用nr
作为数字值,为什么要以String
发送它。 尝试将其更改为Integer
,至less应该稍微进一步。
编辑:我忘了我认为你可能混合了行/列以及。 我想也许你想要它是:
If ws.Cells(nr, i).Value = 1 Then
这对我有效
Function who(ByVal rowNr As Long) As String Dim temp As String Dim ws As Worksheet Dim i As Long Set ws = ActiveSheet For i = 13 To 20 Step 1 If ws.Cells(rowNr, i).Value = 1 Then temp = temp & " " & ws.Cells(1, i).Value End If Next i who = Trim(temp) End Function