宏后,Excel Word Wrap工作错误

时间:2010-01-27 20:29:51

标签: excel vba ms-word word-wrap

我有一个宏用于从InputBox接收数据,然后将该数据插入到单元格中。在以下宏运行后,我对数据有一些格式化问题。

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

表格单元格被格式化为自动换行,但是当笔记插入表格时,单元格不会被包装。但是,如果我再次运行宏并插入一个新注释,则插入的前一个注释将显示为已包装,即使它没有发生任何事情,然后向下移动一行。我可以在代码或格式中做些什么来让它正确包装吗?

2 个答案:

答案 0 :(得分:0)

该行

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

在工作表中添加新单元格,从列表标题继承其格式。所以你要做的就是确保标题单元格也启用了自动换行功能。作为替代方案,您可以在之后添加自动换行属性,如下所示:

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

答案 1 :(得分:0)

到目前为止,我发现的唯一修复是插入我需要的行,然后插入并删除另外一行。由于某种原因,自动换行属性将在插入后启动并开始工作(然后由于不需要而将其删除)。

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

看起来不太理想,但直到我知道正确答案是什么才能完成工作。