Sub per formattare celle



  • Sub per formattare celle
    di Roby73 (utente non iscritto) data: 10/03/2015 22:39:47

    Sto creando un codice per la gestione dei preventivi per la mia azienda. Sono arrivato a più di mille righe, ed ora sono bloccato perché vorrei tramite una UserForm contenenti degli OptionButtom, creare dei titoli con formattazioni diverse. Soprattutto dalla Sub OpbTitolo1 richiamare la Sub Inserimento_Titolo, immettere il Font a Bold, e HorizontalAlignment a xlCenter; dalla Sub OpbTitolo2 immettere il Font a Italic, e HorizontalAlignment a xlLeft; e cosi via.

    Chiedo gentilmente un vostro aiuto.
    Grazie
     
    Private Sub OpbTitolo1_Click()                                                      'Titolo per preventivo TIPO 1 con allineamento al centro
    
            TxBDescrTitolo.Enabled = True                                               'Abilità la TextBox Descrizione titolo
            CmBAggiungi.Enabled = True                                                  'Abilita il pulsante CommandButton Aggiungi
            TipoTitolo = "1T"                                                           'Assegna il valore del tipo titolo
         
    End Sub
    
    Private Sub Inserimento_Titolo()                                                               'Inserisce il titolo prescelto
    
            Dim NmrRigaAttiva, ContNmrTitPresenti, IndiceTitolo As Integer              'Dichiara la variabile tipo numero intero
            Dim DscRiga As String                                                       'Dichiara la variabile tipo corrente
            ThisWorkbook.Activate                                                       'Attiva il file per controllare
            NmrRigaAttiva = ActiveCell.Row                                              ' la posizione del cursore
            IndiceTitolo = 0                                                            'Azzera la variabile per il controllo di quanti titoli ci sono presenti
            For ContNmrTitPresenti = 23 To NmrRigaAttiva                                'Esegue un ciclo dall'inizio preventivo fino alla riga attiva
                DscRiga = Worksheets(1).Cells(ContNmrTitPresenti, 14)                   'Legge il contenuto della cella attiva
                If TipoTitolo = Left(DscRiga, 2) Then IndiceTitolo = IndiceTitolo + 1   'Esce dal ciclo For se trova il tipo di titolo corrispondente
            Next ContNmrTitPresenti
            With Worksheets(1).Cells(NmrRigaAttiva, 2)
                 .Font.Name = "Arial"                                                   'Seleziona il tipo di FONT
                 .Font.Size = 9                                                         'Seleziona la dimensione
                 .Font.Bold = True                                                'Seleziona la scritta in grasseto
                 .HorizontalAlignment = xlCenter                                         'Seleziona l'allineamento orrizontale (al centro)
                 .VerticalAlignment = xlCenter                                               'Seleziona l'allineamento verticale (al centro)
                 .Value = TxBDescrTitolo                                                'Inserisce la descrizione del titolo presente nella TextBox
            End With
            Worksheets(1).Cells(NmrRigaAttiva, 14) = TipoTitolo & IndiceTitolo          'Inserisce la descrizione del titolo presente nella TextBox
           
    End Sub



  • di Vecchio Frac data: 11/03/2015 09:43:28

    Da quello che hai detto capisco che: hai una sub "inserimento_titolo" che dovrebbe essere così furba da impostare il titolo prescelto con le formattazioni desiderate, diverse a seconda del contesto (titolo1, titolo2, ecc.).
    Se le cose stanno così ti basta cambiare la firma di "inserimento_titolo" affinché accetti dei parametri (ad esempio, "grassetto", "corsivo", "sottolineato", "allineamento") e poi da "opbtitolo1_click" richiami la medesima sub passando i valori opportuni.
    Sempre ad esempio, quindi, in opbtitolo1_click avrai una call fatta così:
    Call inserimento_titolo(true, false, false, xlcenter)
    Puoi avere quanti parametri vuoi e rendere così la tua sub "inserimento_titolo" talmente flessibile da accettare praticamente tutte le impostazioni desiderate.
    Il trucco si può ripetere anche in altre parti del codice... e forse le tue mille righe possono diventare cento :)





  • di Roby73 (utente non iscritto) data: 12/03/2015 22:06:15

    Grazie mille questa è un ottima soluzione che non avevo provato. Mi sono "complicato la vita" volendo richiamare la sub ed inserendo il tipo di Font, cioè Call Inserimento_Titolo(Bold, xlCenter). In questo modo non funzionava.

    Ciao
    Roberto