Unione celle in grassetto

  • Unione di celle in grassetto di Katia
    Ciao ragazzi avrei un problema di questo tipo, banale ma che non riesco a risolvere
    la funzione qui sotto inserisce nella cella c
    l'unione del contenuto della cella a e la cella b
    (in questo esempio dalla cella 1 alla cella 3).
    il mio problema nasce nel momento in cui vorrei che alla fine dell'unione il testo contenuto nella cella b risultasse in grassetto nella cella c.
    esempio
    cella a1 contiene il testo "mare"
    cella b2 contiene il testo "blu"
    nella cella c1 ottengo "mare blu"
    io vorrei che blu risultasse in grassetto
    ho provato ad impostare prima dell'unione le celle "b" in grassetto ma successivamente quando le unisco non ottengo il risultato sperato.
    qualcuno sa come fare?



     
    For I = 1 To 3
    Range("c" & I).Value = Range("a" & I).Value & " " & Range("b" & I).Value
    Next I
    

    Ciao katia di Apoben64
    Forse è venuto il momento che tu faccia uso del "registratore di macro di excel" , unop strumento unico che ti permete di crearti automunaticamente il codice simulando quello che vuoi ottenere . provaci !
    in ogni modo basta che inserisci nella cella attiva questa istruzione .
     
    Selection.Font.Bold = True ' grassetto 

    Per luca di Katia
    Ciao luca forse non hai letto attentamente quello che ho scritto
    anche se imposto la cella su grassetto quando le unisco il testo contenuto nella cella grassetto non si evidenzia
    qui sotto ho completato la macro
    spiegazione
    lui evidenzia in grasseto il contenuto delle cella da b1 a b3
    poi va in c1 c2 e c3 ed unisce i testi contenuti in a1 a2 a3 con b1 b2 e b3
    es se in a1 ho mare e in b1 ho il testo blu
    in c1 dovrei avere il testo mare blu ma con solamente blu in grassetto

     
    Sub PROVA()
    For i = 1 To 3
    Range("B" & i).Select
    Selection.Font.Bold = True
    Range("c" & i).Value = Range("a" & i).Value & " " & Range("b" & i).Value
    Next i
    End Sub

    Per luca di Katia
    Il registratore di macro l'ho utilizzo sempre solamente che lui agisce su singola cella

    Ciao katia di Apoben64
    Non volevo sottovalutare le tue capacità, ma se vuoi che riesco a capirti , ti chiedo per favore di allungare un esempio concreto utilizzando la sezione apposita.
    sai col caldo sono un pò tardo !

    di Apoben64
    Così non và bene ?
     
    Sub PROVA()
    For i = 1 To 3
    Range("B" & i).Select
    Range("c" & i).Value = Range("a" & i).Value & " " & Range("b" & i).Value
    Range("C" & i).Font.Bold = True
    
    Next i
    
    End Sub

    di Apoben64
    Non credo perchè tu vuoi solo blu in grassetto , non è così ?

    di Apoben64
    E creare una colonna parallela che con la funzione =destra ti permette di prendere solo blu grassettato ? .
    in d1 =destra(c1;3)

    di Apoben64
    Dopo un consulto mi si dice che non si può colorare una parte di un testo contenuto in una cella , per questo bisognerebbe fare uso di una casella di testo, senza bordi . prova !

    Per luca di Katia
    Se provi ad inserire un testo composto da due parole in una cella poi vai all'interno della cella ed evidenzi solo una parte e clicchi sull'icona del grassetto vedrai che lui te lo fa fare quindi e' possibile
    il problema e' in vba come fare

    di Apoben64
    Ma và ?

    di Apoben64
    Eccoti il codice, devi adattarlo alla tua macro !
     
    Range("C1").Select
        ActiveCell.FormulaR1C1 = "mare blu"
        With ActiveCell.Characters(Start:=1, Length:=5).Font
            .Name = "Verdana"
            .FontStyle = "Normale"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With
        With ActiveCell.Characters(Start:=6, Length:=3).Font
            .Name = "Verdana"
            .FontStyle = "Grassetto"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With
        Range("B1").Select
    End Sub

    di Big ronnie
    Ciao katia,prova questo codice.
     
    Sub prova()
    Range("C1") = Range("a1") & " " & Range("b1")
    InizioGrassetto = InStr(1, Range("c1"), Range("b1"))
    Range("c1").Characters(InizioGrassetto).Font.Bold = True
    End Sub
    

    Ciao big ronnie di Apoben64
    Scusa big , il tuo codice lo hai provato ?
    a me darebbe tutto grassetto !

    di Big ronnie
    Ciao luca, provato e funzionante

    Giusto ! di Apoben64
    Hai ragione, funziona

    Per luca e big ronnie di Katia
    Grazie a luca e grazie a big ronnie - la macro funziona
    solo una spiegazione potresti descrivermi i passaggi per poterli poi adattare ad altre colonne
    ossia la prima istruzione unisce il contenuto delle celle a1 e b1
    le altre due istruzioni non le capisco
    potresti indicarmi il contrario
    ossia se volessi rendere in grassetto il contenuto della cella a1 e non b1
    cosi' lo confronto e cerco di capirlo

    Per katia di Apoben64
    La sintassi dell'istruzione che ha usato big ronnie la puoi trovare nel sito :
    http://excelvba.altervista.org/corso/sintassi6.html
    ciao !

    Per luca di Katia
    Scusa luca non vorrei essere rompiscatole ma quando digito il link mi dice errore 404 o la pagina non esite piu' o e stata spostata

    Big ronnie di Enzo
    Scusate l'intromissione ma anche a me servirebbe sapere cosa vogliono dire le stringhe qui sotto
     
    InizioGrassetto = InStr(1, Range("c1"), Range("b1"))
    Range("c1").Characters(InizioGrassetto).Font.Bold = True
    End Sub
    
    

    di Apoben64
    Nel corso base di questo sito si può trovare la spiegazione della funzione usata da big ronnie; in questo caso si fà uso di una variabile che si interpone nel cella propriietà "carattere" , evidenziando in grassetto la seconda riga di testo della cella.

     
    Funzioni di manipolazione delle stringhe 
     
    La tabella seguente, riassume alcune delle funzioni predefinite di Visual Basic per manipolare le Stringhe.  
     
    Funzione Descrizione Esempio Risultato 
    Len() Determina la lunghezza di una stringa NomeVar = Len("Stringa") 7 
    LCase() Converte i caratteri da maiuscoli a minuscoli NomeVar = LCase("Stringa") stringa 
    UCase() Converte i caratteri da minuscoli a maiuscoli NomeVar = UCase("Stringa") STRINGA 
    StrReverse() Inverte le stringhe NomeVar = StrReverse("Stringa") agnirtS 
    Left() Estrae i primi caratteri di una stringa NomeVar = Left("Stringa", 3) Str 
    Right() Estrae gli ultimi caratteri di una stringa NomeVar = Right("Stringa", 3) nga 
    Mid() Estrae i caratteri di una stringa NomeVar = Mid("Stringa", 3,4) ring 
    InStr() Trova una parte di stringa su un’altra NomeVar = InStr("Stringa", "n") 5 
    LTrim() Elimina tutti gli spazi iniziali NomeVar = LTrim(" Stringa ") "Stringa " 
    RTrim() Elimina tutti gli spazi finali NomeVar = RTrim(" Stringa ") " Stringa" 
    Trim() Elimina tutti gli spazi iniziali e finali NomeVar = Trim(" Stringa ") "Stringa" 
    CStr() Converte in una stringa NomeVar = CStr(10) "10" 
    *CInt() Converte in un numero intero NomeVar = CInt("10") 10 
     
     
    *Ogni tipologia di dato possiede la propria funzione di conversione: CDbl(); CSng(); CLng(); Cbool(); CByt(); Cdate().  
     
        
    

    di Apoben64
    Ovviamente questa è la funzione....
     
    InStr() Trova una parte di stringa su un’altra NomeVar = InStr("Stringa", "n") 5 
    

    Per katia ed enzo di Big ronnie
    La variabile iniziograssetto sfrutta la funzione
    instr([inizio, ]stringa1, stringa2[, confronto]) (questa è la sintassi) che cerca una stringa(stringa2)all'interno di un'altra(stringa1 stringa madre) e quando la trova da come risultato il valore(numero di tipo long) della posizione della prima lettera di string2.nel nostro caso inizio dalla prima posizione(1) di stringa1 la ricerca e trovo "blu" parola cercata in c1(stringa1 stringa madre) alla posizione 5.assegno questo valore alla var. iniziograssetto e dico che dal quinto carattere in poi in range("c1") deve essere tutto in grassetto(seconda riga di codice).comunque vi invito a vedere il visualizzatore degli oggetti nell'editor di visual basic in excel dove vi viene spiegata la sintassi e ci sono anche degli esempi.alcune volte non è installato e dovrete provvedere a questo con il disco di excel.infine per katia per vedere "a1" in grassetto cambia nella riga iniziograssetto "b1" con "a1" ed il gioco è fatto.spero di essere stato esauiente,ciao e fatemi sapere.




    Correzione per katia di Big ronnie
    Mi correggo,per vedere soltanto "a1" in grassetto devi dopo range("c1").characters(iniziagrassetto).font.bold = true aggiungere range("c1").characters(len(range("a1")+1).font.bold = false.devi fare questo perchè se no vedresti tutto in grassetto.ulteriore spiegazione:
    il grassetto si ottiene con .font.bold = true ed inoltre len(range("a1") mi da il numero di lettere che forma la stringa range("a1").

    Per katia e big ronnie di Apoben64
    Hai ragione , anche a me mi dà errore , comunque se vai nel corso base trvai la sezione -funzioni di manipolazione delle stringhe-
    ringraziamo anche big ronnie per la sua lezione !.
    a presto

    Per apoben64 di Big ronnie
    Scusami luca ma non ho capito bene cosa mi stai dicendo.ho provato la macro con l'aggiunta dell'ultima riga e funziona bene.quello che ho capito io è che katia voleva vedere un esempio della parola "mare" in grassetto e la parola "blu" non in grassetto,quindi da qui la mia spiegazione.allego il codice per quest'ultimo esempio.
     
    Sub prova1()
    Range("C1") = Range("a1") & " " & Range("b1")
    InizioGrassetto = InStr(1, Range("c1"), Range("a1"))
    Range("c1").Characters(InizioGrassetto).Font.Bold = True
    Range("c1").Characters(Len(Range("a1")) + 1).Font.Bold = False
    End Sub

    Per big ronnie di Apoben64
    Ci siamo fraintesi , mi riferivo a katia in relazione all' accesso alla sessione del corso.
    comunque complimenti hai fatto un buon lavoro !alla prossima !