Grazie mille a tutti per i vostri interventi. Posto qui sotto la soluzione funzionante che ho adottato:

codice:
Private Sub Form_Load()
Dim SQL As String
Dim Tot_Richieste As Integer
Dim Rs As New ADODB.Recordset
Dim CloneRs As New ADODB.Recordset
    
    ApriDB
    SQL = "SELECT COUNT(*) AS Conta" & _
           " FROM Tbl_Richieste"
    Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
    Tot_Richieste = Rs("Conta")
    
    If Not Rs.EOF And Not Rs.BOF Then
        Me.Label1.Caption = "Numero totale di richieste pervenute fino ad oggi: " & Tot_Richieste
        Me.Label1.AutoSize = True
    End If
    Rs.Close
    
    'Tipo Immobile
    SQL = "SELECT tipo_immobile, COUNT(*) AS Conta" & _
          " FROM  Tbl_Richieste,Tbl_Tipo_Immobile" & _
          " WHERE Tbl_Richieste.ID_Tipo_Immobile=Tbl_Tipo_Immobile.ID_Tipo_Immobile" & _
          " GROUP BY tipo_immobile"
    
    Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
    Set CloneRs = Rs.Clone
    If Not Rs.EOF And Not Rs.BOF Then
         With MSChart1
            Set .DataSource = Rs
            .FootnoteText = "Tipologia Immobile:"
            .Width = 9000
            .Height = 5700
            .Top = 1100
            .Left = 480
         End With
    End If
    Me.txt_Statistiche_Tipo_Immobile.Top = 6840
    Me.txt_Statistiche_Tipo_Immobile = Calcola_Percentuali(CloneRs, Tot_Richieste)
    Set CloneRs = Nothing
    Rs.Close
    
    'Tipo Edificio
    SQL = "SELECT tipo_edificio, COUNT(*) AS Conta" & _
          " FROM   Tbl_Richieste,Tbl_Tipo_Edificio" & _
          " WHERE Tbl_Richieste.ID_Tipo_Edificio =Tbl_Tipo_Edificio.ID_Tipo_Edificio" & _
          " GROUP BY tipo_edificio"
          
    Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
    Set CloneRs = Rs.Clone
    If Not Rs.EOF And Not Rs.BOF Then
         With MSChart2
            Set .DataSource = Rs
            .FootnoteText = "Tipologia Edificio"
            .Width = 9000
            .Height = 5700
            .Top = 1100
            .Left = 480
         End With
    End If
    Me.txt_Statistiche_Tipo_Edificio.Top = 6840
    Me.txt_Statistiche_Tipo_Edificio = Calcola_Percentuali(CloneRs, Tot_Richieste)
    Set CloneRs = Nothing
    Rs.Close
    
    'Stato Immobile
    SQL = "SELECT stato_immobile, COUNT(*)AS Conta" & _
          " FROM  Tbl_Richieste, Tbl_Stato_Immobile" & _
          " WHERE Tbl_Richieste.ID_Stato_Immobile=Tbl_Stato_Immobile.ID_Stato_Immobile" & _
          " GROUP BY stato_immobile"
          
    Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
    Set CloneRs = Rs.Clone
    If Not Rs.EOF And Not Rs.BOF Then
         With MSChart3
            Set .DataSource = Rs
            .FootnoteText = "Stato Immobile: "
            .Width = 9000
            .Height = 5700
            .Top = 1100
            .Left = 480
         End With
    End If
    Me.txt_Statistiche_stato_immobile.Top = 6840
    Me.txt_Statistiche_stato_immobile = Calcola_Percentuali(CloneRs, Tot_Richieste)
    Set CloneRs = Nothing
    Rs.Close
    
    'Localita
    SQL = "SELECT Comune, COUNT(*) AS Conta" & _
          " FROM Tbl_Richieste, Tbl_Localita" & _
          " WHERE Tbl_Richieste.ID_Localita=Tbl_Localita.ID_Localita" & _
          " GROUP BY Comune"
          
    Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
    Set CloneRs = Rs.Clone
    If Not Rs.EOF And Not Rs.BOF Then
         With MSChart4
            Set .DataSource = Rs
            .FootnoteText = "Località: "
            .Width = 9000
            .Height = 5700
            .Top = 1100
            .Left = 480
         End With
    End If
    Me.txt_Statistiche_localita.Top = 6840
    Me.txt_Statistiche_localita = Calcola_Percentuali(CloneRs, Tot_Richieste)
    Set CloneRs = Nothing
    Rs.Close
    
    Set Rs = Nothing
    ChiudiDB

End Sub


Private Sub op_grafico_Click(Index As Integer)
    Select Case Index
        Case 0
            Me.MSChart1.Visible = True
            Me.MSChart2.Visible = False
            Me.MSChart3.Visible = False
            Me.MSChart4.Visible = False
            Me.txt_Statistiche_Tipo_Immobile.Visible = True
            Me.txt_Statistiche_Tipo_Edificio.Visible = False
            Me.txt_Statistiche_stato_immobile.Visible = False
            Me.txt_Statistiche_localita.Visible = False
        Case 1
            Me.MSChart1.Visible = False
            Me.MSChart2.Visible = True
            Me.MSChart3.Visible = False
            Me.MSChart4.Visible = False
            Me.txt_Statistiche_Tipo_Immobile.Visible = False
            Me.txt_Statistiche_Tipo_Edificio.Visible = True
            Me.txt_Statistiche_stato_immobile.Visible = False
            Me.txt_Statistiche_localita.Visible = False
        Case 2
            Me.MSChart1.Visible = False
            Me.MSChart2.Visible = False
            Me.MSChart3.Visible = True
            Me.MSChart4.Visible = False
            Me.txt_Statistiche_Tipo_Immobile.Visible = False
            Me.txt_Statistiche_Tipo_Edificio.Visible = False
            Me.txt_Statistiche_stato_immobile.Visible = True
            Me.txt_Statistiche_localita.Visible = False
        Case 3
            Me.MSChart1.Visible = False
            Me.MSChart2.Visible = False
            Me.MSChart3.Visible = False
            Me.MSChart4.Visible = True
            Me.txt_Statistiche_Tipo_Immobile.Visible = False
            Me.txt_Statistiche_Tipo_Edificio.Visible = False
            Me.txt_Statistiche_stato_immobile.Visible = False
            Me.txt_Statistiche_localita.Visible = True
    End Select
End Sub

Function Calcola_Percentuali(ByVal objRS As ADODB.Recordset, Tot_Richieste) As String
Dim VALORE
Dim Nome As String

Dim str_temp As String
    If Not objRS.EOF And Not objRS.BOF Then
        Do While Not objRS.EOF
            VALORE = FormatPercent(objRS("Conta") / Tot_Richieste)
            Nome = objRS(0)
            str_tmp = str_tmp & Nome & "=" & VALORE & ";" & vbCrLf
            objRS.MoveNext
        Loop
    End If
    Calcola_Percentuali = str_tmp
End Function