CONCATENAGRASSETTO



  • CONCATENA+GRASSETTO
    di Redlione (utente non iscritto) data: 26/05/2016 18:44:37

    Buonasera, premesso che col VBA sono zero, ho provato ad adattare un codice trovato on-line per una macro. Il mio scopo è concatenare i dati di 8 celle dalla "A" alla "H" mantenendo in grassetto solo il contenuto della cella "D" (una cosa anche semplice a mio avviso ) e invece la macro mi restituisce in grassetto tutta la stringa delle 8 celle, invece della sola cella "D"...
    Potreste correggermi questo codice per quello che serve a me, 1000 grazie per l'aiuto
    Saluti
     
    Sub CANCATENA_GRASSETTO()
    For i = 1 To 10
    Range("J" & i) = Range("a" & i) & " " & Range("b" & i) & " " & Range("c" & i) & " " & Range("d" & i) & " " & Range("e" & i) & " " & Range("f" & i) & " " & Range("g" & i) & " " & Range("h" & i)
    lunghezza = Len(Range("d" & i)) + 1
    Range("j" & i).Characters(1, lunghezza).Font.Bold = True
    Next i
    End Sub



  • di Albatros54 data: 26/05/2016 18:58:45

    In questa riga sostituisci "J" con "D"come sotto.
    ciao
    albatros54 
     
    Range("D" & i).Characters(1, lunghezza).Font.Bold = True






  • di Marius44 data: 26/05/2016 19:30:30

    Salve a tutti

    @albatros
    ma col tuo suggerimento credo che mette in grassetto il contenuto della cella D mentre, se ho capito bene, si vuole la cella J (che contiene tutte le precedenti) di scrittura normale tranne il contenuto della cella D nella cella J in grassetto.

    Secondo me la macro sotto fa il suo dovere come richiesto.
    Fai sapere. Ciao,
    Mario
     
    Sub CANCATENA_GRASSETTO()
    For i = 1 To 10
    aa = Range("a" & i) & " " & Range("b" & i) & " " & Range("c" & i)
    bb = Range("d" & i)
    cc = " " & Range("e" & i) & " " & Range("f" & i) & " " & Range("g" & i) & " " & Range("h" & i)
    lng1 = Len(aa) + 1
    lng2 = Len(bb) + 1
    Range("J" & i) = aa & " " & bb & "" & cc
    Range("J" & i).Characters(lng1, lng2).Font.Bold = True
    Next i
    End Sub
    



  • di Redlione (utente non iscritto) data: 27/05/2016 10:39:42

    Buongiorno e grazie per l'aiuto,
    ma ancora non ho risolto... mi scuso per la confusione e confermo che la mia necessità è quella descritta da Marius44, ovvero (concatenare nella cella §J§ il contenuto delle celle §a-b-c-d-e-f-g-h§, mantenendo in grassetto, nella cella §J§, il contenuto della sola cella §D§)
    Dunque la correzione suggerita da Albatros54 in effetti trasforma in grassetto la cella §D§, mentre il codice di Marius44 mi restituisce in grassetto tutto, anziché il solo contenuto della §D§.
    Se può fare differenza, a me basta che i dati che vanno a concatenarsi mantengano la formattazione di origine, che nel mio caso si limita alla sola cella §D§ in grassetto, ma forse un codice in tal senso è più complesso degli altri...
    Ciao



  • di Marius44 data: 27/05/2016 11:09:23

    Ciao
    non sono d'accordo con quanto affermi. Analizziamo la macro suggerita:

    aa, bb e cc sono variabili a cui viene assegnato, rispettivamente, il contenuto delle celle da A fino a C comprese, il contenuto della cella D e il contenuto delle celle dalla E alla H.

    Quindi misura la lunghezza della variabile aa e della variabile bb.

    Scrive nella cella J la concatenazione delle tre variabili con uno spazio fra loro.

    A questo punto "rende in grassetto" i caratteri della cella J "partendo dall'ultimo carattere della variabile aa" (cioè lung1) e "finendo all'ultimo carattere della variabile bb" (cioè lung2).

    Non può comportarsi come dici tu. Le prove da me eseguite mi confortano.

    Ciao,
    Mario