Excel Forum Per condividere esperienze su Microsoft Excel

[RISOLTO] verifica il contenuto di 2 celle

  • Messaggi
  • OFFLINE
    raimea
    Post: 61
    Registrato il: 27/11/2007
    Città: LOZIO
    Età: 46
    Utente Junior
    offc 2010
    10 15/03/2024 17:43
    ciao
    tramite macro (no format condz.)
    avrei bisogni di controllare il contenuto di 2 celle ,
    su stessa riga, partendo da riga 8 a UR, fgl generale

    son le celle di col k e L
    il contenuto corretto su stessa riga puo essere:
    P 0
    V 15b

    tutte le altre combinazioni sono da considerarsi errate
    P 15b V 0

    vorrei nel caso di errore:
    colorare lo sfondo di nero caratere bianco,
    della cella di col L

    e un msg box che mi indica quante cobinazioni errate sono state trovate.

    vi allego il file


    ciao


    wind 10 & office 2010
  • OFFLINE
    federico460
    Post: 3.329
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Master
    365
    00 15/03/2024 19:04
    ciao
    devi levare alle lettere V e P la formattazione condizionale

    in un modulo

    Public Sub formatta()
    Dim Lista As Range
    Set Lista = Range(Cells(8, 11), Cells(8, 11).End(xlDown))
    For Each cl In Lista
    If cl = "P" And cl.Offset(0, 1) <> "0" Or cl = "V" And cl.Offset(0, 1) <> "15b" Then
    cl.Interior.ColorIndex = 1
    cl.Offset(0, 1).Interior.ColorIndex = 1
    cl.Font.Color = vbWhite
    cl.Offset(0, 1).Font.Color = vbWhite
    ElseIf cl = "P" Then
    cl.Font.Color = vbRed
    Else
    cl.Font.Color = vbGreen
    End If
    Next
    End Sub



    i vbaisti la miglioreranno
    [Modificato da federico460 15/03/2024 19:04]
  • OFFLINE
    raimea
    Post: 61
    Registrato il: 27/11/2007
    Città: LOZIO
    Età: 46
    Utente Junior
    offc 2010
    00 15/03/2024 19:40
    ciao
    quasi ok

    ok si colora giusto di nero dove serve

    ma manca il MSGBOX che mi dice quanti errori

    ciao
    wind 10 & office 2010
  • OFFLINE
    federico460
    Post: 3.330
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Master
    365
    00 15/03/2024 20:13
    ciao
    da me pretendi troppo in VBA😀


    Public Sub formatta()
    Dim Lista As Range
    Set Lista = Range(Cells(8, 11), Cells(8, 11).End(xlDown))
    For Each cl In Lista
    If cl = "P" And cl.Offset(0, 1) <> "0" Or cl = "V" And cl.Offset(0, 1) <> "15b" Then
    cl.Interior.ColorIndex = 1
    cl.Offset(0, 1).Interior.ColorIndex = 1
    cl.Font.Color = vbWhite
    cl.Offset(0, 1).Font.Color = vbWhite
    ElseIf cl = "P" Then
    cl.Font.Color = vbRed
    Else
    cl.Font.Color = vbGreen
    End If
    Next
    Call conta
    End Sub
    Sub conta()
    Set Lista = Range(Cells(8, 11), Cells(8, 11).End(xlDown))
    somma = 0
    For Each Cella In Lista
    If Cella.Interior.ColorIndex = 1 Then
    somma = somma + 1
    End If
    Next
    MsgBox ("numero errori =" & somma)
    End Sub



    spero qualche vbaista te la migliori
    ma funziona eh!
    [Modificato da federico460 15/03/2024 20:14]
  • OFFLINE
    raimea
    Post: 62
    Registrato il: 27/11/2007
    Città: LOZIO
    Età: 46
    Utente Junior
    offc 2010
    00 15/03/2024 20:23
    ciao
    quasi ok

    il conteggio la 1ma volto e' corretto
    ma poi se correggo qualche errore

    mi dice sempre il totale rilevato la prima volta

    ciao
    wind 10 & office 2010
  • OFFLINE
    federico460
    Post: 3.331
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Master
    365
    00 15/03/2024 21:02
    ciao
    dimenticato lo sfondo

    Public Sub sostituisci()
    Dim Lista As Range
    Set Lista = Range(Cells(8, 11), Cells(8, 11).End(xlDown))
    For Each cl In Lista
    If cl = "P" And cl.Offset(0, 1) <> "0" Or cl = "V" And cl.Offset(0, 1) <> "15b" Then
    cl.Interior.ColorIndex = 1
    cl.Offset(0, 1).Interior.ColorIndex = 1
    cl.Font.Color = vbWhite
    cl.Offset(0, 1).Font.Color = vbWhite
    ElseIf cl = "P" Then
    cl.Interior.ColorIndex = xlNone
    cl.Offset(0, 1).Interior.ColorIndex = xlNone
    cl.Font.Color = vbRed

    Else
    cl.Interior.ColorIndex = xlNone
    cl.Offset(0, 1).Interior.ColorIndex = xlNone
    cl.Font.Color = vbGreen
    End If
    Next
    Call conta
    End Sub
    Sub conta()
    Set Lista = Range(Cells(8, 11), Cells(8, 11).End(xlDown))
    somma = 0
    For Each Cella In Lista
    If Cella.Interior.ColorIndex = 1 Then
    somma = somma + 1
    End If
    Next
    MsgBox ("numero errori =" & somma)
    End Sub

  • OFFLINE
    raimea
    Post: 63
    Registrato il: 27/11/2007
    Città: LOZIO
    Età: 46
    Utente Junior
    offc 2010
    00 15/03/2024 21:29
    ciao

    tutto ok
    perfetta

    faccio ulteriori test

    grazie 🤩
    wind 10 & office 2010
  • OFFLINE
    fraribre
    Post: 1
    Registrato il: 08/10/2019
    Età: 65
    Utente Junior
    2019
    00 18/03/2024 05:31
    Buongiorno Raimea
    Permettimi una riflessione…..
    Leggendo i tuoi post, hai fatto delle richieste molto precise, come un/a professorino/a
    Mai un PER FAVORE o un GRAZIE se non alla fine.
    Il BUON è BRAVO Federico si è smazzato e ti ha risolto la richiesta ……e tu…….

    Un po’ di educazione e cortesia fanno sempre bene !!!!!
    Francesco