Mantenere grassetto

Anonimo
2017-08-19T20:14:35+00:00

Buonasera,

non vorrei abusare troppo della vostra disponibilità ma vi chiedo ancora uno sforzo.

Grazie a Norman è stato risolto un primo problema (https://answers.microsoft.com/it-it/msoffice/forum/msoffice_excel-mso_win10-mso_2010/collegamento-ipertestuale-dinamico/154b17a1-2211-401f-9079-89c5bbabd77f)

Il secondo ( mantenere la formattazione in grassetto)  pensavo di risolverlo seguendo una vecchia risposta di Norman https://answers.microsoft.com/it-it/msoffice/forum/msoffice_excel-mso_winother/formattazione-condizionale-su-grassetto/70b058a6-9e73-412c-8184-c25198bbed69?auth=1)

ma non ci sono riuscito. Dove ho sbagliato?

Descrivo cosa vorrei con un esempio pratico : In B5 ricerco "Pippo". Il risultato sono due titoli ma "Pippo & Pluto" (in questo caso è la cella C9) dovrebbe presentarsi in grassetto.

Il file di Norman conteneva di già il mio tentativo quindi ripropongo il link:

https://www.dropbox.com/s/r69656go3ea3zqo/ByEF20170819.xlsm?dl=0

Grazie per l'aiuto e la pazienza!!

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
2017-08-20T11:42:09+00:00

Ciao By EF,

hai ragione la strada per risolvere non era in quel thread.

Non so come hai provato di utilizzare questa funzione. Infatti, faccio fatica a pensare come un approccio del genere possa essere utile nel tuo scenario!

La soluzione finale è stata questa:

'--------->>

Private Sub Worksheet_change(ByVal Target As Range)

    If Not Intersect (Target, Range ("B5")) Is Nothing Then

             Application.ScreenUpdating = False

             Range ("C8:C18").ClearContents

             For i=8 To 18

                   CelIs (i, 3).Font.Bold= False

                   For j=5 To 1000

                   If Cells (i, 2)> 0 And Cells(i, 2)= Cells(j, 8) Then

                          CelIs (i, 3) = Cells (j, 9 )

                          If CelIs (j, 9).Font.Bold= True Then

                             CelIs (i, 3).Font.Bold= True

                         End If

                  End If

             Next j

          Next i

         Application.ScreenUpdating= True

      End If

   End sub

'------------<<

Credo che si possa rendere più efficiente questo codice. Nota anche che sarebbe necessario sostituire le cinque istanze di CelIs con Cells.

Tuttavia, se fosse per me, vorrei cancellare questo codice ed invece ricorrere alla tua idea originale di sfruttare la formattazione condizionale.  Quindi, per le formule della formattazione condizionale, invece di tentare a controllare se il formato grassetto sia stato imposto per la cella di interesse, credo che si possa utilizzare le funzioni native CONFFONTA e VAL.NUMERO.

Quindi:

  • Seleziona l'intervallo B8:D18 ed imposta la formattazione condizionale, utilizzando la seguente formula:

      =VAL.NUMERO(CONFRONTA($B8;$H$5:$H$1500;0))

  • Seleziona l'intervallo G5:I1500 ed imposta la formattazione condizionale, utilizzando la seguente formula:

      =VAL.NUMERO(CONFRONTA($H5;$B$8:$B$18;0))

Potresti scaricare il mio file di prova ByEF20170820.xlsm

Per agevolare gli altri utenti interessati e rendere più esplicita la risoluzione di un thread, è preferibile una risposta esplicita ( tipo [RISOLTO], etc ) o basta a lato della domanda: "Il problema è stato risolto?" premere SI ?

Per chiudere il thread, basta premere SI e, in tal caso si vederebbe la risposta automatica:

Ottimo! La risposta verrà contrassegnata come risposta.

Comunque, mentre non è necessario inviare una risposta,  il ringraziamento è sempre gradito e tutte le osservazioni pertinenti che si desidera fare per l'attuazione della soluzione saranno apprezzate e possono essere di grande aiuto per gli altri membri della Community.

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-09-02T08:32:34+00:00

    Ciao Norman,

    scusa per il ritardo nel feedback ma sono stato lontano dal pc per un pò...

    Grazie per la soluzione e per la segnalazione del refuso per Cells (fortunatamente nel file master era digitato correttamente).

    Se vuoi darmi il tuo suggerimento sull'ottimizzazione del codice è ovviamente graditissimo.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-08-20T07:09:27+00:00

    Ciao Norman,

    hai ragione la strada per risolvere non era in quel thread.

    Non so come hai provato di utilizzare questa funzione. Infatti, faccio fatica a pensare come un approccio del genere possa essere utile nel tuo scenario!

    La soluzione finale è stata questa:

    '--------->>

    Private Sub Worksheet_change(ByVal Target As Range)

        If Not Intersect (Target, Range ("B5")) Is Nothing Then

                 Application.ScreenUpdating = False

                 Range ("C8:C18").ClearContents

                 For i=8 To 18

                       CelIs (i, 3).Font.Bold= False

                       For j=5 To 1000

                       If Cells (i, 2)> 0 And Cells(i, 2)= Cells(j, 8) Then

                              CelIs (i, 3) = Cells (j, 9 )

                              If CelIs (j, 9).Font.Bold= True Then

                                 CelIs (i, 3).Font.Bold= True

                             End If

                      End If

                 Next j

              Next i

             Application.ScreenUpdating= True

          End If

       End sub

    '------------<<

    Grazie ancora.

    PS.

    Bene, mi fa piacere che almeno quel problema sia stato risolto.

    Per agevolare gli altri utenti interessati e rendere più esplicita la risoluzione di un thread, è preferibile una risposta esplicita ( tipo [RISOLTO], etc ) o basta a lato della domanda: "Il problema è stato risolto?" premere SI ?

    Attendo indicazioni.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-08-19T22:58:38+00:00

    Ciao By EF,

    non vorrei abusare troppo della vostra disponibilità ma vi chiedo ancora uno sforzo.

    Non preoccuparti, è sempre un piacere! Rispondiamo alle domande perchè lo vogliamo fare.

    Grazie a Norman è stato risolto un primo problema (https://answers.microsoft.com/it-it/msoffice/forum/msoffice_excel-mso_win10-mso_2010/collegamento-ipertestuale-dinamico/154b17a1-2211-401f-9079-89c5bbabd77f)

    Bene, mi fa piacere che almeno quel problema sia stato risolto.

    Il secondo ( mantenere la formattazione in grassetto)  pensavo di risolverlo seguendo una vecchia risposta di Norman https://answers.microsoft.com/it-it/msoffice/forum/msoffice_excel-mso_winother/formattazione-condizionale-su-grassetto/70b058a6-9e73-412c-8184-c25198bbed69?auth=1)

    ma non ci sono riuscito. Dove ho sbagliato?

    Veramente, non saprei! In quel thread, avevo suggerito l'uso della mia funzione IsBold, in una formula della formattazione condizionale, per consentire l'evidenziazione di una cella in cui il formato grassetto sia stato imposto.  Non so come hai provato di utilizzare questa funzione. Infatti, faccio fatica a pensare come un approccio del genere possa essere utile nel tuo scenario!

    Descrivo cosa vorrei con un esempio pratico : In B5 ricerco "Pippo". Il risultato sono due titoli ma "Pippo & Pluto" (in questo caso è la cella C9) dovrebbe presentarsi in grassetto.

    Il file di Norman conteneva di già il mio tentativo quindi ripropongo il link:

    https://www.dropbox.com/s/r69656go3ea3zqo/ByEF20170819.xlsm?dl=0

    Penso di essermi perso qualcosa perchè, di primo acchito, avrei pensato che fosse sufficiente semplicemente impostare il formato grassetto all'intervallo C8:C18. Se vorresti gentimente spiegare quello che mi è sfuggito, sono sicuro che potremmo facilmente risolvere il problema.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento