Modificare file gestire une tabella

Anonimo
2013-11-20T08:36:52+00:00

Ciao a tutti, la mia domanda è molto semplice. Ho trovato molto utile il file pubblicato da Mauro in wiki: Gestire una tabella nascosta tramite una Userform. Quello che vi chiedo: Invece di vedere il codice "cod001! ho la necessità di avere i numeri in progressione da 1 a seguire. Potete aiutarmi?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-11-21T08:33:40+00:00

Questa è la macro che ho utilizzato:

<cut>

Funziona molto bene, quando invece evidenzio la riga da eliminare o modificare vengo avvertito dalle msgbox ma non cambia nulla.

In cmdElimina e cmdModifica, modifica questa istruzione:

 If .Range("A" & lng).Value = _

                    Me.ListBox1.List(Me.ListBox1.ListIndex, 0) Then

così:

 If .Range("A" & lng).Value = _

                    CLng(Me.ListBox1.List(Me.ListBox1.ListIndex, 0)) Then

Fai sapere se risolvi.

Grazie.

NOTA. Ho modificato l'articolo Wiki con l'aggiunta di due nuovi file da scaricare:

La risposta è stata utile?

0 commenti Nessun commento

12 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-11-20T10:34:47+00:00

    nel codice di caricamento della ListBox, piuttosto che fare riferimento ad un campo (colonna) dal quale prelevare i dati, potresti utilizzare la proprietà ListCount che restituisce il numero di voci presenti in un controllo.

    Questo un esempio:

    ListBox1.List( indiceRiga, indiceColonna) = ListBox1.ListCount

    Ricordati che gli indici di riga e di colonna iniziano da 0.

    Andrea.

    In tutti i casi, se l'utente elimina qualche riga, la numerazione (quale essa sia), porta a ripetizioni. cioè si rischia di avere un valore utilizzato in precedenza.

    Sarebbe una cosa da tenere presente. Excel non dispone di un *contatore* sul modello di Access che impedisce quanto sopra.

    Una soluzione potrebbe essere quella di avere i valori usati in precedenza in un foglio a parte e utilizzare quel foglio come contatore oppure implementare una variabile nascosta (un Name, io farei in questo modo). Dipende sempre dalle esigenze dell'utente.

    Una soluzione banale.

    • In un foglio nominare una cella come NumeroProgressivo
    • Modificare così la parte finale di cmdNuovo:

            Else

                Me.TextBox1.Text = [NumeroProgressivo]

            End If

    Modificare così la parte finale di cndInserisci:

            MsgBox "Operazione completata, dati inseriti", _

                vbOKOnly + vbInformation, _

                "Inserimento dati"

            [NumeroProgressivo] = [NumeroProgressivo] + 1

        Else

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-11-20T10:25:36+00:00

    ...

    Prova un po' e fai sapere.

    Ops .. è arrivato il Maestro e io non avevo capito cosa intendeva geacs.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-11-20T10:21:55+00:00

    Ciao a tutti, la mia domanda è molto semplice. Ho trovato molto utile il file pubblicato da Mauro in wiki: Gestire una tabella nascosta tramite una Userform. Quello che vi chiedo: Invece di vedere il codice "cod001! ho la necessità di avere i numeri in progressione da 1 a seguire. Potete aiutarmi?

    Ciao,

    nel codice di caricamento della ListBox, piuttosto che fare riferimento ad un campo (colonna) dal quale prelevare i dati, potresti utilizzare la proprietà ListCount che restituisce il numero di voci presenti in un controllo.

    Questo un esempio:

    ListBox1.List( indiceRiga, indiceColonna) = ListBox1.ListCount

    Ricordati che gli indici di riga e di colonna iniziano da 0.

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-11-20T10:09:25+00:00

    Ciao a tutti, la mia domanda è molto semplice. Ho trovato molto utile il file pubblicato da Mauro in wiki: Gestire una tabella nascosta tramite una Userform. Quello che vi chiedo: Invece di vedere il codice "cod001! ho la necessità di avere i numeri in progressione da 1 a seguire. Potete aiutarmi?

    Grazie per aver letto l'articolo Wiki.

    Modifica così la Sub cmdNuovo:

    'Pulsante che prepara le TextBox per una nuova riga da inserire nel foglio Registro

    Private Sub cmdNuovo_Click()

        'Dichiaro una variabile

        Dim lng As Long

        'Pulisco le TextBox

        Call mPulisciTextBox

        With sh

            'Se non ho dati precedenti

            If lRiga = 1 Then

                'In TextBox 1 insrisco Cod001

                Me.TextBox1.Text = 1

            'Altrimenti

            Else

                'Passo alla variabile lng il valore numerico presente nell'ultima

                'riga con valori di colonna A del foglio Registro aumentandolo di 1

                lng = .Range("A" & lRiga).Value + 1

                'Compongo il nuovo codice per TextBox1

                Me.TextBox1.Text = lng

            End If

        End With

    End Sub

    Se i dati in colonna 1 non sono ordinati, puoi provare così:

    Private Sub cmdNuovo_Click()

        'Dichiaro le variabili

        Dim lng As Long

        Dim s As String

        'Pulisco le TextBox

        Call mPulisciTextBox

        With sh

            'Se non ho dati precedenti

            If lRiga = 1 Then

                'In TextBox 1 insrisco Cod001

                Me.TextBox1.Text = 1

            'Altrimenti

            Else

                'Passo alla variabile lng il valore numerico restituito da Evaluate +1

                s = "=MAX(" & .Name & "!A2:A" & lRiga & ")"

                lng = Evaluate(s) + 1

                'Compongo il nuovo codice per TextBox1

                Me.TextBox1.Text = lng

            End If

        End With

    End Sub

    Prova un po' e fai sapere.

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento