2010-01-27 7 views
1

InputBox에서 데이터를 받고 해당 데이터를 셀에 삽입하는 데 사용하는 매크로가 있습니다. 다음 매크로가 실행 된 후 데이터 서식 문제가 발생합니다.Excel에서 Word Wrap이 매크로 뒤에 잘못 작동합니다.

Sub InsertNotes() 
' 
' insertnotes Macro 
' 

' 
    Dim UserNotes As String 

    UserNotes = InputBox(Prompt:="Please enter your note below:", Title:="Note input", Default:="Notes") 
    If UserNotes = "" Then Exit Sub 
    ActiveSheet.ListObjects("Notes").ListRows.Add (1) 
    ActiveSheet.Range("Notes").Cells(1, 1) = Date 
    ActiveSheet.Range("Notes").Cells(1, 2) = UserNotes 

End Sub 

표 셀은 단어 줄 바꾸기 기능을 갖도록 형식이 지정되어 있지만 메모가 표에 삽입되면 셀이 줄 바꿈되지 않습니다. 그러나 매크로를 다시 실행하여 새 노트를 삽입하면 삽입 된 이전 노트는 줄 바꿈되지 않고 아무 것도 발생하지 않고 줄 바꿈으로 표시됩니다. 제대로 포장하기 위해 코드 또는 서식 내에서 할 수있는 일이 있습니까?

+0

임시 행 대신 임시 도형을 사용하여 관련 답변을 게시했습니다. http://stackoverflow.com/questions/1718874/predict-text-wrapping-in-cell-excel-2000-using-vba/15370350# 15370350 – SimpleSam5

답변

0

라인

ActiveSheet.ListObjects("Notes").ListRows.Add (1) 

목록 제목에서 자신의 형식을 상속하여 시트에 새로운 세포를 추가합니다. 따라서 제목 셀에 단어 줄 바꾸기 기능이 설정되어 있는지 확인해야합니다. 또 다른 방법으로는 다음과 같이, 나중에 바꿈 속성을 추가 할 수 있습니다

ActiveSheet.Range("Notes").Cells(1, 2).WrapText = true 
+0

주사위가 없습니다. 헤더에는 WordWrap이 활성화되어 있습니다. WrapText 속성을 추가하려고 했는데도 작동하지 않는 것 같습니다. –

+0

"Notes"는 정확히 어떻게 정의되어 있습니까? –

+0

음, Excel 내에서 범위를 강조 표시하고 Format as Table 기능을 사용하여 이름을 지정하고 이름을 지정했습니다. –

0

내가 지금까지 삽입하고 한 번 더 행을 삭제 한 후 내가 원하는 행을 삽입하는 것입니다 위해 찾은 유일한 수정 그 후. 어떤 이유로 wrap 속성이라는 단어가 삽입되어 삽입 후 작업을 시작합니다 (필요하지 않으면 삭제됩니다).

Sub InsertNotes() 
' 
' insertnotes Macro 
' 

' 
    Dim UserNotes As String 
    ' Turn off screen updating 
    Application.ScreenUpdating = False 
    UserNotes = InputBox(Prompt:="Please enter your note below:", Title:="Note input", Default:="Notes") 
    If UserNotes = "" Then Exit Sub 
    ActiveSheet.ListObjects("Notes").ListRows.Add (1) 
    ActiveSheet.Range("Notes").Cells(1, 1) = Date 
    ActiveSheet.Range("Notes").Cells(1, 2) = UserNotes 
    ActiveSheet.Range("Notes").Cells(1, 2).WrapText = True 
    ' Crap fix to get the wrap to work. I noticed that after I inserted another row the previous rows 
    ' word wrap property would kick in. So I just add in and delete a row to force that behaviour. 
    ActiveSheet.ListObjects("Notes").ListRows.Add (1) 
    ActiveSheet.Range("Notes").Item(1).Delete 
    Application.ScreenUpdating = True 

End Sub 

매우 이상적으로 보이지는 않지만 적절한 답이 무엇인지 알 수있을 때까지 완료됩니다.

관련 문제