Excel 2016 - Mesclar célula e Formatar parte do texto com o VBA

0

Estou mesclando duas células no Excel 2016
= E2 & "-" & F2

Agora, o texto na célula E2 é Normal - o texto na célula F2 é Bold
No entanto, ao mesclar as células, todo o texto é Normal

Se você escrever em uma célula, pode optar por tornar parte do texto em negrito. Então, duas formatações em uma célula são possíveis - mas ao mesclar?

Informações adicionais:
Depois de pesquisar o problema, acredito que exija um pouco de script VBA. Se você puder ajudar com um script que leia o tamanho da primeira parte e, em seguida, coloque em negrito a última parte do texto que deve fazê-lo. No entanto, a fórmula completa é: = SE (Planejar! F2 < > ""; Planejar! E2 & "-" & Plano! F2; Planejar! E2)

A função do VBA que tenho até agora é:

Function boldIt(navn As String, ekstra As String)

Dim ln1 As Integer
Dim ln2 As Integer

ln1 = Len(navn)
ln2 = Len(navn) + Len(ekstra)

If (ln1 = ln2) Then
    boldIt = navn
Else
    boldIt = navn & " - " & ekstra
    boldTxt ln1, ln2
End If

End Function

Public Sub boldTxt(startPos As Integer, charCount As Integer)
    With ActiveCell.Characters(Start:=startPos, Length:=charCount).Font
        .FontStyle = "Bold"
    End With
End Sub

A função leva o conteúdo das duas células de texto que eu quero combinar
O texto é mesclado corretamente e a subfunção é chamada (testada com msgBox)
No entanto, o texto não está em negrito como eu esperava

    
por Morten Repsdorph Husfeldt 21.04.2017 / 08:59

2 respostas

0

Eu não tenho o Excel 2016 para testar, o que eu sei:

Até o Excel 2013:

Quando você mescla células no Excel, mescla apenas o "espaço", mas nada mais.
Conteúdo, formatação, borda, preenchimento ... serão mantidos somente na primeira célula e serão perdidos para todos os outros.
Isso é por design.

No Excel Online:

Você pode mesclar apenas os intervalos em que o máximo de uma célula contém informações. Nesse caso, a formatação também é transferida corretamente para mim.

    
por 21.04.2017 / 09:30
0

Eu fiz isso com um Sub: -)

Este Sub percorre as colunas, pega as strings das duas células, combina as strings e as adiciona à célula-alvo, enquanto que o texto da segunda célula fica em negrito

Tnx para Máté Juhász por seus ponteiros!

Sub boldIt()
Dim pos_bold As Integer
Dim celltxt As String

For i = 2 To 200000
    ' first cell will always be populated - if not - exit
    If (Range("Plan!E" & i).Value = "") Then Exit For

    ' if second cell is empty - take only first cell as normal txt
    If (Range("Plan!F" & i).Value = "") Then
        Range("Kalender!F" & i).Value = Range("Plan!E" & i).Value
    Else
        ' calculate start of bold text
        pos_bold = Len(Range("Plan!E" & i).Value) + 1

        ' create the string
        celltxt = Range("Plan!E" & i).Value & " - " & Range("Plan!F" & i).Value
        ' add string to field and add bold to last part
        With Worksheets("Kalender").Range("F" & i)
            .Value = celltxt
            .Characters(pos_bold).Font.Bold = True
        End With
    End If
Next i
End Sub
    
por 24.04.2017 / 21:46