Unione celle grassetto

Storico discussioni

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 !

di Katia
Grazie a tutti per l'interessamento

Cognolato Studio © 2005