Store location of cell address to variable in VBA

后端 未结 3 1942
没有蜡笔的小新
没有蜡笔的小新 2021-01-22 22:29

I\'m using VBA in Excel and I\'m using a function to find the first empty row then adding some values, after that I need to pass the address of the cell to another function but

相关标签:
3条回答
  • 2021-01-22 22:49

    You do not need to overcomplicate the code with something like Set addCell = Worksheets("Schedule").Range(.Address) because it really makes the readability a bit tough. In general, try something as simple as this: Set FirstEmptyRow = myCell. Then the whole code could be rewritten to this:

    Public Function FirstEmptyRow() As Range
    
        Dim myCell As Range
        Dim coltoSearch As String, lastRow As String
        Dim wks As Worksheet
    
        Set wks = Worksheets(1)
        coltoSearch = "A"
    
        Dim i As Long
        For i = 3 To wks.Range(coltoSearch & Rows.Count).End(xlUp).Row
            Set myCell = sheet.Range(coltoSearch & i)
            If IsEmpty(myCell) Then
                Set FirstEmptyRow = myCell
                Exit For
            End If
        Next i
    
        If i = 2 ^ 20 Then
            MsgBox "No empty rows at all!"
        Else
            Set FirstEmptyRow = sheet.Range(coltoSearch & i + 1)
        End If
    
    End Function
    

    The last part of the code makes sure, that if there is no empty cell before the last row and row number 3, then next cell would be given as an answer. Furthermore, it checks whether this next row is not the last row in Excel and if it is so, it gives a MsgBox() with some information.

    0 讨论(0)
  • 2021-01-22 22:50

    The .Address property returns a string so you'll need to to set the addCell variable like so:

    Set addCell = Worksheets("Schedule").Range(.Address)
    
    0 讨论(0)
  • 2021-01-22 22:55

    I am a total "noob" at vba and learning by trying code snipits and routines that appear to to me to answer to a problem I am stuck on. When I tried the code posted by Vityata I encountered "Run-time error '424': Object Required at the following stmts:

        Set myCell = Sheet.Range(coltoSearch & i)
        Set FirstEmptyRow = Sheet.Range(coltoSearch & i + 1)
    

    Changing the stmts as follows resolved the errors for me:

        Set myCell = wks.Range(coltoSearch & i)
        Set FirstEmptyRow = wks.Range(coltoSearch & i + 1)
    

    I also added a Debug.Print stmt between the last End If and the End Function stmts so I could quickly see the result when testing as follows:

            End If
            Debug.Print "The 1st empty cell address is "; coltoSearch & i
        End Function
    

    If I have violated some posting rule, please accept my apology. Hopefully sharing this will avoid future confusion by others who use a similar learning process.

    0 讨论(0)
提交回复
热议问题