Condividi tramite

Msgbox che mostra valore

Anonimo
2013-09-14T13:15:31+00:00

Ciao a tutti,

Ho bisogno ancora del vostro aiuto per capire come scrivere il codice che mi permette di fare quanto segue: Se la cella C10 è vuota oppure il valore (si tratta di testo) lo trovo nel range da A1:A20 esco dalla sub. Se invece il valore della cella C10 è diverso da quello che confronta da A1:A20 allora una msgbox mi avverte dicendomi, se è possibile il contenuto della cella C10. Questo confronto dovrei eseguirlo dalle celle C10:C15 una per una perché ho la necessità nel momento che il valore confrontato risulti diverso che mi indichi il contenuto o valore della cella.

Grazie per quello che farete.

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-09-16T11:14:42+00:00

Praticamente è quasi perfetta,

L'unica cosa è se c'è la possibilità di non fare uscire la msgbox se le celle da C1:C15 sono vuote oppure contengono gli stessi valori contenuti nelle celle da A1:A20.

Grazie immensamente Mauro.

Modifica questa riga:

If Len(c1.Value) > 0 Then

così:

If Len(c1.Value) > 0 Or c1 = "" Then

Se ho capito, eh. ;-)

La risposta è stata utile?

0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-09-16T08:39:19+00:00

    Praticamente è quasi perfetta,

    L'unica cosa è se c'è la possibilità di non fare uscire la msgbox se le celle da C1:C15 sono vuote oppure contengono gli stessi valori contenuti nelle celle da A1:A20.

    Grazie immensamente Mauro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-09-16T05:02:05+00:00

    Ciao e grazie Andrea,

    Ho provato il codice e mi sono accorto che se ad esempio nella cella C10 trova un valore riportato nelle celle da A1:A20 esce dalla sub senza considerare i valori che seguono. Se ad esempio in C10, C11 e C12 i valori sono diversi mi vengono segnalati ma se in C15 il valore è diverso non mi dice nulla. Se addirittura il valore di C10 lo trova esce subito dalla sub senza analizzare gli altri valori.

    Inoltre è possibile fare in modo che la msgbox mi indichi solo il valore della cella senza specificare ad esempio che si tratta della cella C10?

    Se ho capito(dubito):

    Public Sub m()

        Dim sh As Worksheet

        Dim c1 As Range

        Dim c2 As Range

        Dim s As String

        Dim bln As Boolean

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            For Each c1 In .Range("C10:C15")

                bln = False

                For Each c2 In .Range("A1:A20")

                    If Len(c1.Value) > 0 Then

                        If c1.Value = c2.Value Then

                            bln = True

                        End If

                    End If

                Next

                If bln = False Then _

                    s = s & vbNewLine & c1.Value

            Next

        End With

        If Len(s) > 0 Then

            MsgBox s

        End If

        Set c1 = Nothing

        Set c2 = Nothing

        Set sh = Nothing

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-09-15T17:55:43+00:00

    Ciao e grazie Andrea,

    Ho provato il codice e mi sono accorto che se ad esempio nella cella C10 trova un valore riportato nelle celle da A1:A20 esce dalla sub senza considerare i valori che seguono. Se ad esempio in C10, C11 e C12 i valori sono diversi mi vengono segnalati ma se in C15 il valore è diverso non mi dice nulla. Se addirittura il valore di C10 lo trova esce subito dalla sub senza analizzare gli altri valori.

    Inoltre è possibile fare in modo che la msgbox mi indichi solo il valore della cella senza specificare ad esempio che si tratta della cella C10?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-09-15T16:27:34+00:00

    Ciao a tutti,

    Ho bisogno ancora del vostro aiuto per capire come scrivere il codice che mi permette di fare quanto segue: Se la cella C10 è vuota oppure il valore (si tratta di testo) lo trovo nel range da A1:A20 esco dalla sub. Se invece il valore della cella C10 è diverso da quello che confronta da A1:A20 allora una msgbox mi avverte dicendomi, se è possibile il contenuto della cella C10. Questo confronto dovrei eseguirlo dalle celle C10:C15 una per una perché ho la necessità nel momento che il valore confrontato risulti diverso che mi indichi il contenuto o valore della cella.

    Grazie per quello che farete.

    Ciao,

    la macro allegata dovrebbe fare quello che chiedi. Se non hai mai utilizzato le macro prima leggi [Excel

    Andrea.


    Sub controllaCelle()

    Dim rSource As Range, rSearch As Range, rFound As Range, cel As Range

    With ThisWorkbook.Worksheets("Foglio1")

    Set rSource = .Range("C10:C15")

    Set rSearch = .Range("A1:A20")

    End With

    For Each cel In rSource

    '---------- trattandosi di ricerca su testo puoi modificare le opzioni di ricerca

    '---------- adattandole alle tue esigenze (ricerca parziale, esatta, distinzione tra maiuscole e minuscole)

    If Len(cel) Then

    Set rFound = rSearch.Find(What:=cel.Value, _

    After:=rSearch.Cells(1, 1), _

    LookIn:=xlValues, _

    LookAt:=xlWhole, _

    MatchCase:=True)

    If rFound Is Nothing Then

    MsgBox "Cella: " & cel.Address(False, False) & " - Valore: " & cel.Value & vbNewLine & vbNewLine & _

    "Non trovato.", vbInformation + vbOKOnly

    Else

    '---------- esce dalla sub perché il valore nell'intervallo C10:C15 è stato trovato

    Exit For

    End If

    Else

    '---------- esce dalla sub perché la cella nell'intervallo C10:C15 è vuota

    Exit For

    End If

    Next

    Set cel = Nothing:  Set rFound = Nothing:  Set rSource = Nothing:  Set rSearch = Nothing

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento