>>1のコードでusersを検索する場合、実際は戻り値をこうする必要がある。
クライアントコードからの入り口をGetUsers()だとしたい場合は、関数名も含めてこうなる。

Sub GetUsers() As ADODB.Recordset
  Dim objConnection As ADODB.connection
  Set objConnection = New ADODB.connection
  Set GetUsers = B(objConnection)
  If objConnection.State <> adStateClosed Then
    Call objConnection.Close
  End If
End Sub

Private Function B(ByVal objConnection As ADODB.connection) As ADODB.Recordset
  On Error Resume Next
  Set B = A(objConnection)
  If Err.Number <> 0 Then
    Debug.Print Err.Description
  End If
End Sub

Private Function C(ByVal objConnection As ADODB.connection) As ADODB.Recordset
  Call objConnection.Open
  ' usersを検索してRecordsetを戻す
End Sub

Private Sub Command1_Click()
  Dim rs As ADODB.Recordset
  Set rs = GetUsers()
  'rsの内容を画面表示
End Sub

GetSections()を作ってCommand1_Click()から呼びたい場合、同じようなコードセットを書く必要がある。