The following VBA codes does everything I require except for one detail.
When I double click on any cell in column H below row 4, the row it processes is always row 4.
What the code must do, is process the exact row of the cell in column H that I double clicked on.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  If Target.Address = "$I$1" Then
   Cancel = True  ' Prevent edit mode for I1

    Me.Unprotect password:="edit"
    Application.EnableEvents = False
    ' Clear specific ranges
    Range("A2:H2").ClearContents
    Range("I3").ClearContents
    Range("I4").ClearContents
    Range("A4:H300").ClearContents

    MsgBox "Page has been reset"
    Application.EnableEvents = True
    Me.Protect password:="edit"
  End If
  
If Target.Column <> 8 Then Exit Sub ' Check if double clicked in column H and exit if not
    If Target.row < 4 Or Target.Value = "" Then Exit Sub
    
If Target.Column = 8 Then  ' Rest code for processing row in column H
'If Target.row > 4 Or Target.Value <> "" Then
' Set auditRow based on the double-clicked cell in column H
'Set auditRow = Sheets("Key Audit").Rows(Target.row)
Set auditRow = Sheets("Key Audit").Rows(Target.row).Offset(0)  ' Offset by 0 rows
'If Target.Column = 8 Then
    'If Target.row > 4 Or Target.Value <> "" Then
    'Cancel = True  ' Prevent edit mode
    
' Set worksheets
'Dim auditRow As Range, allocRow As Range
Dim returnSheet As Worksheet, allocSheet As Worksheet

Set auditRow = Sheets("Key Audit").Rows(Target.row)
Set returnSheet = Sheets("Key Return")
Set allocSheet = Sheets("Key Allocation")

' Confirmation message
If MsgBox("Would you like to record details of a Lost or Returned Key?", vbYesNo) = vbNo Then
Exit Sub
End If

  ' Password storage cell
  Dim passwordCell As Range
  Set passwordCell = Range("J1")

  ' Password Retrieval
  Dim storedPassword As String
  storedPassword = passwordCell.Value

  ' Password Prompt
  Dim enteredPassword As String
  enteredPassword = InputBox("Enter Password to access Key Return sheet:", "Password Required")

  ' Check entered password
  If enteredPassword <> storedPassword Then
    MsgBox "Incorrect Password. Access Denied.", vbExclamation
    Cancel = True ' Prevent further actions
    Exit Sub
  End If

' Find matching row in "Key Allocation" sheet
Set allocRow = allocSheet.Rows.Find(auditRow.Range("A1:H1"), LookIn:=xlValues, LookAt:=xlWhole)

' Check if matching row found
If allocRow Is Nothing Then
MsgBox "Matching row not found in 'Key Allocation' sheet.", vbExclamation
Exit Sub
End If

ThisWorkbook.Worksheets("Key Allocation").Unprotect password:="edit"
ThisWorkbook.Worksheets("Key Return").Unprotect password:="edit"
allocSheet.Visible = True
' Copy specific range (A:H) from "Key Allocation" to "Key Return"
'allocRow.Range("A:H").Copy returnSheet.Rows(returnSheet.Rows.Count).End(xlUp).Offset(1).Range("A:H")
allocRow.EntireRow.Copy returnSheet.Rows(returnSheet.Rows.Count).End(xlUp).Offset(1).EntireRow
' Delete matching row from "Key Allocation" sheet
'allocRow.Range("A:H").Delete Shift:=xlUp
allocRow.EntireRow.Delete Shift:=xlUp
allocSheet.Protect password:="edit"
allocSheet.Visible = False
Application.Wait Now + TimeValue("00:00:01")
' Unhide and activate "Key Return" sheet (using Visible property - recommended for all versions)
returnSheet.Visible = True ' OR use Option 2 or 3 based on your Excel version (see previous comments)
returnSheet.Activate
        End If
    Call ReturnLostRest
    Cancel = True  ' Prevent edit mode
End Sub

Sub ReturnLostRest()
    Application.EnableEvents = False
    Me.Unprotect password:="edit"
    
    Dim wsKeyAudit As Worksheet, wsKeyAllocation As Worksheet
    Dim wsKeyAuditRow As Long
    Dim resetValue As Variant
    Dim cell As Range
    Dim i As Integer
    
    Set wsKeyAudit = ThisWorkbook.Sheets("Key Audit")
    Set wsKeyAllocation = ThisWorkbook.Sheets("Key Allocation")
    
    ' Clear range A4:H30 in wsKeyAudit before copying
    wsKeyAudit.Range("A4:H300").ClearContents

    resetValue = wsKeyAudit.Range("A2").Value
    wsKeyAuditRow = wsKeyAudit.Cells(wsKeyAudit.Rows.Count, 1).End(xlUp).row + 1

    For Each cell In wsKeyAllocation.Range("A2:A" & wsKeyAllocation.Cells(wsKeyAllocation.Rows.Count, 1).End(xlUp).row)
        If cell.Value = resetValue And wsKeyAllocation.Cells(cell.row, 8).Value <> Date Then
            With wsKeyAudit.Rows(wsKeyAuditRow)
                For i = 1 To 8 ' Copying only columns A to H
                    If i <> 9 Then ' Excluding column I
                        .Cells(1, i).Value = cell.EntireRow.Cells(1, i).Value
                    End If
                Next i
            End With
            wsKeyAuditRow = wsKeyAuditRow + 1
        End If
    Next cell
    Me.Protect password:="edit"
    Application.EnableEvents = True
End Sub