순간 나를 당황하게 만든 서식

잔말말고 그것이 무엇인지 확인!!!



흐음...저 "부분/문자열"이라는 문자열은 하나의 셀에 있는 값입니다.
테두리를 보이게 할 걸 그랬네요..^^;

모...아는 게 아니니, 일단 구글링...으로 솔직히 별 어렵지 않게 찾았습니다.
  + 갈수록 검색시의 키워드 선택 감각이 발전하는 듯 합니다. 캬캬~
검색해서 찾은 게 아래의 코드 입니다.

With TargetCell.Characters(Start, Len(TargetWord)).Font 
    If IsNull(FontName) = False Then .Name = FontName 
    If IsNull(FontBold) = False Then .Bold = FontBold 
    If IsNull(FontSize) = False Then .Size = FontSize 
    If IsNull(FontColor) = False Then .ColorIndex = FontColor 
End With 
Url: http://www.vbaexpress.com/kb/getarticle.php?kb_id=743

대충 보시면, Cell 객체 안에 Characters라는 객체가 존재합니다. 그리고 Characters라는 객체는 왠지 문자열에 대한 객체일듯 하구요. 코드는 TargetCell이라는 Cell에 포함된 Characters 문자열의 Start부터 Len(TargetWord)까지의 Font를 설정해주는 코드네요. 당연스럽게 TargetWord는 실질적으로 TargetCell.Characters와 동일하겠죠.

 + VBA(Excel이든, word 든)에서는 객체라는 용어를 사용하기가 개인적으로 좀 애매합니다. VBA에서 Class를 제공하기는 하지만, 동작하는 것을 보면, 우리가 일반적으로 사용하는 C++, JAVA 등에서의 Class와는 사뭇 다른 느낌이 나거든요. 기회가 되면, 이에 대해서 썰을 한 번 풀어보도록 하겠습니다.

제가 할 것은 붉은 색으로 된 [부분/문자열]에서 [/문자열]만을 검정색으로 변경해주는 것 입니다.
   # 헙;; 위의 요구사항 예시를 잘못 만들었네요.ㅋㅋ

With ThisWorkbook.Sheets("Sheet1")
    Dim i As Integer
    For i = 0 To rowOffset
        Dim index As Integer
        Dim target As String
        target = .Range(START_CELL).Offset(i, 5).Value
        index = InStr(1, target, "/")
        If index > 0 Then
            .Range(START_CELL).Offset(i, 5).Characters(index, Len(target)).Font.Color = RGB(0, 0, 0)
        End If
    Next i
End With
코드는 간단합니다. 원하는 Cell의 문자열에서 "/"의 위치를 찾고 존재한다면, "/"부터 끝까지를 검정색으로 설정!
부분문자열에 대한 font 핸들링은 Cell에서 Characters 객체를 이용하시면 됩니다!!!