Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    103

    [vba] problemi di filtraggio

    Salve a tutti. ho un foglio excell che gestisco con delle form. In una di queste immetto i dati nell'altra attraverso dei checkbox li filtro. Il problema sta nel fatto che se checko uomini o donne li conta, mentre se seleziono gli altri check la cosa non viene fatta. Il codice è tutto nel pulsante e sono una serie di funzioni richiamate da un select case
    codice:
    Private Sub btn_mostra_Click()
    situazione = True
    Select Case situazione
        Case Is = chc_uomini.Value = True
            contaUomini (True)
        Case Is = chc_donne.Value = True
            contaDonne (True)
        Case Is = chc_gravi.Value = True
            contaGravi (True)
        Case Is = chc_fisico.Value = True
            contaFisica (True)
        Case Is = chc_motoria.Value = True
            contaMotoria (True)
        Case Is = (chc_fisico.Value = True), (chc_uomini.Value = True)
            'contaUominiFisico(True,True)
    End Select
    mentre le funzioni sono così:
    codice:
    Function contaGravi(grave As Boolean)
    If grave = True Then
        For i = 1 To 10000
        If Range("J" & i) = 3 Then
            conta = conta + 1
        End If
        Next
        lbl_filtro = conta
    End If
    End Function
    Io chiedo se c'è un modo per creare una sola funzione che possa comprenderle tutte io ho provato ma il mio pc si è molto risentito. altra cosa perchè i primi due case vengono eseguiti mentre gli altri non danno alcun messaggio (neanche d'errore)
    Grazie per la vostra pazienza
    neho

  2. #2
    puoi postare il codice di cotauomini e contadonne, così vediamo quella che funzionano.

    ciao
    --

    __ [ K3iji ] __

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    103
    Ecco il codice
    codice:
    Function contaUomini(uomini As Boolean)
    If uomini = True Then
        For i = 1 To 10000
        If Range("B" & i) = 1 Then
            conta = conta + 1
        End If
        Next
        lbl_filtro = conta
    End If
    End Function
    Function contaDonne(donne As Boolean)
    If donne = True Then
        For i = 1 To 10000
        If Range("D" & i) = 1 Then
            conta = conta + 1
        End If
        Next
        lbl_filtro = conta
    End If
    End Function
    grazie per il tuo tempo
    neho

  4. #4

    Re: [vba] problemi di filtraggio

    Originariamente inviato da neho34
    Salve a tutti. ho un foglio excell che gestisco con delle form. In una di queste immetto i dati nell'altra attraverso dei checkbox li filtro. Il problema sta nel fatto che se checko uomini o donne li conta, mentre se seleziono gli altri check la cosa non viene fatta. Il codice è tutto nel pulsante e sono una serie di funzioni richiamate da un select case
    codice:
    Private Sub btn_mostra_Click()
    situazione = True
    Select Case situazione
        Case Is = chc_uomini.Value = True
            contaUomini (True)
        Case Is = chc_donne.Value = True
            contaDonne (True)
        Case Is = chc_gravi.Value = True
            contaGravi (True)
        Case Is = chc_fisico.Value = True
            contaFisica (True)
        Case Is = chc_motoria.Value = True
            contaMotoria (True)
        Case Is = (chc_fisico.Value = True), (chc_uomini.Value = True)
            'contaUominiFisico(True,True)
    End Select
    mentre le funzioni sono così:
    codice:
    Function contaGravi(grave As Boolean)
    If grave = True Then
        For i = 1 To 10000
        If Range("J" & i) = 3 Then
            conta = conta + 1
        End If
        Next
        lbl_filtro = conta
    End If
    End Function
    Io chiedo se c'è un modo per creare una sola funzione che possa comprenderle tutte io ho provato ma il mio pc si è molto risentito. altra cosa perchè i primi due case vengono eseguiti mentre gli altri non danno alcun messaggio (neanche d'errore)
    Grazie per la vostra pazienza
    C'e' un errore nel tuo codice, dovuto all'uso "strambo" del Select Case !

    codice:
    situazione = True
    Select Case situazione
    VVoVe:

    ...le parti di codice contenute nei "rami" Case sono mutualmente esclusivi, ossia ne viene eseguito UNO SOLO !

    Quindi, visto che ALMENO UNO tra chc_uomini.Value e chc_donne.Value varra' sempre True (presumo), l'elaborazione non ha speranze di esplorare i successivi rami Case !
    IceCube_HT (VB6 fan Club)

  5. #5
    ... e poi, non e' piu' semplice fare:
    If chc_uomini Then contaUomini (True)
    If chc_donne Then contaDonne (True)
    IceCube_HT (VB6 fan Club)

  6. #6
    ciao

    Per creare una sola funzioni potresti fare così:

    codice:
    Function contanumero(stato As Boolean, campo as strinng)
    If stato = True Then
        For i = 1 To 10000
        If Range(campo & i) = 1 Then
            conta = conta + 1
        End If
        Next
        lbl_filtro = conta
    End If
    
    ' poi la richiami cosi
    
    call contanumero(true, "lettera") ' dove lettera sta per laettera della cella interessata.
    non ho testato il codice, ma dovrebbe funzionare.

    ciao
    --

    __ [ K3iji ] __

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    103
    Grazie a tutti per il vostro interessamento e il vostro tempo. Mi avete risolto il problema e ve ne sono molto grato.
    Ciao e grazie ancora
    Enzo
    neho

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.