vba(하단에 첨부)로 특정 라인에 "(재)책정요청, 중지요청, 제외요청" 이 있으면 그 라인에만 파랑, 빨강,빨강이 칠해지게 만들었습니다.
그래서 엑셀표 상에서는 색상이 잘 입혀집니다.
다만, 문제가 있다면
이걸 회사에서 쓰는 프로그램에 붙여넣기를 하면 글꼴색이 붙여넣기가 안되네요..
(엑셀표) al43:al65 에는 이런식으로 결과값이 작성되어있는데
이거를 회사에서 쓰는 프로그램에 붙여넣기 하면
밑에내용은 색깔이 안불러와집니다! ㅎㅎㅎㅎ
이게 동적으로 내용이 계속 바뀌는 표라서 vba를 설정해둔건데 그러네요..
근데 또 수기로 글자색깔 드래그해서 복붙하면 또 글자에 색깔이 먹혀요.....
어떤게 문제일가요!!!
Sub AL열색상적용()
Dim ws As Worksheet
Dim cell As Range
Dim lines() As String
Dim lineText As String
Dim currentPos As Integer
Dim i As Integer
Set ws = ActiveSheet
For Each cell In ws.Range("AL41:AL65")
If Len(cell.Value) > 0 Then
lines = Split(cell.Value, vbLf)
currentPos = 1
For i = LBound(lines) To UBound(lines)
lineText = lines(i)
If Len(lineText) > 0 Then
On Error Resume Next
cell.Characters(currentPos, Len(lineText)).Font.Color = RGB(0, 0, 0)
If InStr(lineText, "제외요청") > 0 Or _
InStr(lineText, "중지요청") > 0 Then
cell.Characters(currentPos, Len(lineText)).Font.Color = RGB(255, 0, 0)
ElseIf InStr(lineText, "재책정요청") > 0 Or _
InStr(lineText, "책정요청") > 0 Then
cell.Characters(currentPos, Len(lineText)).Font.Color = RGB(0, 0, 255)
End If
On Error GoTo 0
End If
currentPos = currentPos + Len(lineText) + 1
Next i
End If
Next cell
End Sub
안녕하세요~
원인은 VBA 문제라기보다는 복사 방식 또는 클립보드 형식 문제로 보는 것이 좋을 듯합니다.
엑셀 셀 내부에서 Characters().Font.Color로 부분 글꼴색을 주면 엑셀 화면에서는 정상적으로 보입니다.
하지만 셀 전체를 복사해서 외부 프로그램에 붙여넣을 때, 외부 프로그램이 엑셀의 셀 내부 부분 서식을 제대로 해석하지 못하면 텍스트만 붙고 글꼴색은 빠질 수 있습니다.
반대로 수기로 셀 안에 들어가서 일부 글자를 드래그한 뒤 복사하면 색상이 붙는 이유는, 이때는 엑셀이 셀 자체가 아니라 편집 중인 Rich Text 텍스트 조각을 클립보드에 올리기 때문입니다.
즉,
엑셀 셀 복사와 셀 안 텍스트 드래그 복사를 할 때,
클립보드에 올라가는 데이터 형식이 다를 수 있고, 외부 프로그램이 이 둘을 다르게 처리하고 있는 것으로 보입니다.
그래서 첨부파일에서는
MS Word 객체를 중간 매개체로 사용하여, 엑셀 셀 내용을 Word 문서에 서식 있는 텍스트로 다시 만든 뒤 클립보드에 복사하도록 코딩했습니다.
이 방식은 수기로 글자를 드래그해서 복사하는 것과 비슷하게, 텍스트 단위의 서식 있는 복사를 유도하는 방식입니다.
다만 회사 프로그램이 RTF 또는 서식 있는 텍스트 붙여넣기를 지원해야 색상이 유지됩니다.
만약 해당 프로그램이 일반 텍스트만 받는 구조라면 어떤 방식으로 복사해도 색상은 넘어가지 않을 수 있습니다.
회사 프로그램을 알 수 없어서 PPT와 MS Word로 테스트했습니다.
한번 적용해 보세요.

대박... 감사합니다! 적용해볼게요~ ><
럭키한 한달 보내세요!!!!