A funcionalidade a seguir teria me poupado muito tempo nas inúmeras vezes que precisei de algo assim.
Em certas circunstâncias específicas juntamos as informações de inúmeros campos para compor um texto. Ao apresentá-lo, invariavelmente teremos um espaço limitado.
A função abaixo permite que formatemos a frase delimitando onde será realizada a mudança de linha.
Muito útil em highlights de apresentações Powerpoint, quando a composição dos comentários é formada por várias fontes de dados como tabelas e gráficos.
Pode acelerar muito a composição de Dashboards, onde os comentários são seguidos de números e ranges. O texto ficará automaticamente pré-formatado.
Certamente será ainda mais útil na composição de infográficos
Public Function BreakTextAtX (_varOriginal As Variant, _Optional strBreakCharacter As String = " ", _Optional lngMaxLength As Long = 72) As Variant' Code written by Ken Snell -- 15 November 2008' strOriginal is the original text string' strBreakCharacter is the character that is used to break the' text into separate lines (e.g., a blank space); if no' character is provided to the function, it uses a blank' space as the value' lngMaxLength is the maximum length for each separate line;' if no length is provided ot the function, it uses 72' as the maximum lengthDim strNewString As String, strWorking As String, strPart As StringDim strOriginalNoCrLf As StringDim lngPosition As Long, lngHold As Long, lngLength As LongDim lngWorkLength As Long
Let lngLength = Len(varOriginal & "")If lngLength > 0 ThenLet strOriginalNoCrLf = Replace(Replace(CStr(varOriginal), vbCr, ""), vbLf, "")Let strNewString = ""Let lngPosition = 1Do While lngPosition <= lngLengthLet strWorking = Mid(strOriginalNoCrLf, lngPosition, lngMaxLength)Let lngWorkLength = Len(strWorking)If lngWorkLength < lngMaxLength ThenIf Len(strNewString) > 0 And Len(strWorking) > 0 Then _Let strNewString = strNewString & vbCrLfLet strNewString = strNewString & strWorkingExit DoElseLet lngHold = InStrRev(strWorking, strBreakCharacter)If lngHold = 0 Then Let lngHold = lngWorkLengthIf Len(strNewString) > 0 Then _Let strNewString = strNewString & vbCrLfLet strNewString = strNewString & Left(strWorking, lngHold)Let lngPosition = lngPosition + lngHoldEnd IfLoopLet BreakTextAtX = strNewStringElseIf IsNull(varOriginal) = True ThenLet BreakTextAtX = varOriginalElseLet BreakTextAtX = ""End IfEnd IfEnd Function
Tags: VBA, Tips, Office, quebra, texto, linha, row, linefeed, line break, quebra, página, highlight