Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585

    [VBA/Excel] errore 13 - tipo di dati non corrispondente se inserisco o cancello colonna

    Ciao a Tutti,
    ho il seguente file che mi consente di calcolare in automatico sia l' età che l' Esperienza in azienda di una persona.

    Funziona però se cerco di inserire / cancellare una colonna mi appare la mascherina
    13 - tipo di dati non corrispondente...

    Ho provato a guardare in internet per vedere di risolvere il problema ma non ci riesco ...

    Grazie in anticipo dell' aiuto !!!
    File allegati File allegati

  2. #2
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    in quella macro i riferimenti di colonna sono calcolati in base alla denominazione, quindi se modifichi la situazione devi modificare tutto. Prima devi capirla bene e poi fare modifiche. Detto questo a me sembra inutile fare una macro per calcolare la differenza tra due date, bastano le formule. Il colore delle celle lo puoi ottenere tramite formattazione condizionale.
    Se non riesci allega un file con la tabella che desideri.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ciao Patel, Grazie x il tuo intervento !!

    Volevo dirti che sì, le colonne Età ed Esperienza fanno parte di un file che poi viene distribuito a vari utenti.
    Ciascuno di loro deve mantenere queste colonne che riportano l' intestazione "Età" ed "Esperienza" ma possono inserirvi anche colonne intermedie.

    Avevo pensato a ricorrere alle formule anzichè le macro ma bisogna tener conto di applicare il calcolo automatico su quelle colonne che riportano la specifica intestazione.

    Con la macro nel file il tutto mi funziona bene, però se diventa difficile togliere il messaggio di errore, allora si può pensare alle formule ...

    Mi sembrava di essere arrivato ad un pelo dalla risoluzione ...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Succede semplicemente perché, in quel caso, l'area target include la riga 1, dove ci sono le stringhe della testata.
    E nella riga 1 hai un errore di conversione della data (ovviamente, visto che nella riga 1 non c'è una data ma un testo)

    Basta modificare la macro in modo che non esegua nulla nel caso di r = 1
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ciao oregon sei un grande !!! Bravissimo !!!! Funziona !!!!!

    Posto tutto il codice x chi fosse interessato ....

    Se per caso ci fosse in qualche punto, qualche ridondanza di codice, la segnalazione fa sempre piacere per scrivere in futuro un codice sempre più corretto...

    Grazie ancora !!

    codice:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    
    On Error GoTo errore
    
    
    Dim CNom As Variant, CNasc As Variant, CEta As Variant, CAss As Variant, CEsp As Variant
    Dim e As Integer, e2 As Integer, r As Long, r2 As Long
    Dim dFr, dFr2, dTo
    '
    CNom = Application.Match("Nominativo", Sheets("Persone").Rows(1), 0)
    CNasc = Application.Match("Data di nascita (gg/mm/aaaa)", Sheets("Persone").Rows(1), 0)
    CEta = Application.Match("Età", Sheets("Persone").Rows(1), 0)
    CAss = Application.Match("Data assunz. (gg/mm/aaaa)", Sheets("Persone").Rows(1), 0)
    CEsp = Application.Match("Esperienza", Sheets("Persone").Rows(1), 0)
    
    
    
    
    If Cells(Target.Row, CNom) <> "" And Cells(Target.Row, CNasc) <> "" Then
        r = Target.Row
        Application.EnableEvents = False
        If r > 1 Then
           dFr = Cells(r, CNasc)
           dTo = DateSerial(Year(Now()), 12, 31)
           e = DateDiff("yyyy", dFr, dTo)
           Cells(r, CEta).Value = e
           If e >= 18 And e <= 67 Then
              Cells(r, CEta).Interior.ColorIndex = xlNone
           Else
              With Cells(r, CEta).Interior
                  .Color = 16751103
                  .TintAndShade = 0
             End With
           End If
        End If
        Application.EnableEvents = True
    End If
    
    
    If Cells(Target.Row, CNom) <> "" And Cells(Target.Row, CAss) <> "" Then
        r2 = Target.Row
        Application.EnableEvents = False
        If r2 > 1 Then
           dFr2 = Cells(r, CAss)
           dTo = DateSerial(Year(Now()), 12, 31)
           e2 = DateDiff("yyyy", dFr2, dTo)
           Cells(r2, CEsp).Value = e2
           Application.EnableEvents = True
        End If
    End If
    
    
    xit:
    Application.EnableEvents = True
    Exit Sub
    errore:
    MsgBox Err.Number & " - " & Err.Description
    Resume xit
    
    
    End Sub
    Ultima modifica di betto; 30-10-2017 a 16:15

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.