Stocker les données de localisation de l'adresse de la cellule à la variable en VBA

Je suis à l'aide de VBA dans Excel et je suis en utilisant une fonction pour trouver la première ligne vide puis d'ajouter des valeurs, après que j'ai besoin de passer l'adresse de la cellule à une autre fonction, mais à l'aide du code ci-dessous j'obtiens une erreur à l'exécution. firstEmptyRow est une fonction qui renvoie une plage,par exemple $A$280.

Dim addCell as Range

'Find first empty row in the table
With firstEmptyRow

'Enter Values
.Value = taskID
.Offset(0, 1).Value = jobID
.Offset(0, 2).Value = jobName
.Offset(0, 6).Value = taskTypeID
.Offset(0, 8).Value = taskName
.Offset(0, 9).Value = desc
.Offset(0, 11).Value = estMins
.Offset(0, 13).Value = "No"

set addCell = .Address //Gives a runtime error

End With

Quelle est la bonne façon d'économiser de l'adresse de la cellule, donc je peux passer à une autre fonction? Ci-dessous est le code pour firstEmptyRow

Public Function firstEmptyRow() As Range 'Returns the first empty row in the Schedule sheet

    Dim i, time As Long
    Dim r As Range
    Dim coltoSearch, lastRow As String
    Dim sheet As Worksheet

    Set sheet = Worksheets("Schedule")
    time = GetTickCount
    coltoSearch = "A"

    For i = 3 To sheet.Range(coltoSearch & Rows.Count).End(xlUp).Row
        Set r = sheet.Range(coltoSearch & i)
        If Len(r.Value) = 0 Then
            Set firstEmptyRow = sheet.Range(r.Address)
            'r.Select
            Exit For 'End the loop once the first empty row is found
        End If
    Next i

'Debug.Print "firstEmptyRow time: " & GetTickCount - time, , "ms"

End Function
  • Il serait plus propre de passer firstEmptyRow directement à la Gamme de type de paramètre, plutôt que de le convertir en une chaîne, puis de nouveau à un objet de la Plage (en particulier depuis, vous devez ensuite spécifier le parent feuille de calcul, ce qui rend votre code plus fragiles si vous avez besoin de mise à jour)
  • Ne pas public function firstEmptyRow() as Range dire que je suis déjà passer en tant que Gamme? Je ne pense pas que je sais ce que tu veux dire
  • Je veux dire, si vous avez déjà une Gamme variable de type firstEmptyRow il n'y a pas besoin de convertir une chaîne de caractères (via Address) et puis de nouveau à un objet de la Plage: le round-trip à travers la Chaîne n'est pas nécessaire et vous pouvez juste passer firstEmptyRow directement.
InformationsquelleAutor Harry12345 | 2014-07-14