2017-04-22 7 views
0

나는 두 개의 셀을 병합 한 후 굵은가 병합 잘
간다VBA 세포와 병합 ** 초 전지

포맷과 세포 2의 텍스트를 강조하기 위해 VBA 기능을 코딩하고의 굵은 ** 텍스트 서브로 전화를 잘
간다하지만 텍스트 형식은

내가이 셀이 문자열로 채워지기 전에 실행 부에 의해 발생할 수 있습니다 생각

을 적용되지 않습니다 -하지만 순수 추측입니다 - 이것은 내 첫 번째 VBA 스크립트

입니다
Function boldIt(navn As String, ekstra As String) 

Dim ln1 As Integer 
Dim ln2 As Integer 
Dim st1 As String 

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 
+1

작동하지 않습니다. 선택적 서식 지정은 셀 내에 저장된 실제 텍스트 문자열을 처리 할 수 ​​있습니다. 함수가 완료되기 전에 셀 내에 텍스트 문자열이 없습니다. 끝나면 셀에 텍스트 문자열을 반환하는 수식이 있고 ** 일반 텍스트 문자열이 아닙니다. –

답변

0

컬럼을 통해 세부 루프 위해 @Jeeped 상기 제 2 셀의 텍스트 스트링을 결합하여 표적 세포에 추가

감사 동안 볼드을 두 셀의 스트링을 얻어 포인터!

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 
1

나는 두 개의 서브를 실행한다고 생각합니다. 함수가 아무 것도 반환하지 않습니다.

Option Explicit 

Sub boldIt() 
    Dim secondOne As String 
    With Selection 
     secondOne = .Cells(2).Value2 
     Application.DisplayAlerts = False 
     .Merge 
     Application.DisplayAlerts = True 
     .Cells(1) = .Cells(1).Value2 & secondOne 
     boldTxt .Cells(1), Len(.Cells(1).Value2) - Len(secondOne) + 1, Len(secondOne) 
    End With 
End Sub 

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

함수가 제대로 작동하고 필드가 채워져 있어야합니다. 단지 텍스트를 굵게 표시하지 않습니다 (Sub가없는 다중 버전을 사용했습니다). –

+0

* 함수가 아무 것도 반환하지 않는다는 것을 이해한다고 생각하지 않습니다. * 함수는 값을 반환한다고 가정합니다. 아무 것도 리턴하지 않고 단순히 액션을 수행하는 경우, 서브 대신에 함수를 사용하는 것은 의미가 없습니다. 그걸로 중반에, 나는 두 개의 잠수함을 사용했다. – Jeeped

+0

당신이하는 일 :-) 그러나 원래의 셀을 유지하고 새로운 셀에 데이터를 추가하고 싶습니다. 전체 열을 루핑합니다. –