macrosWord后,Excel Word Wrap工作不正常

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

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 

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

该线

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

将新的单元格添加到您的工作表,从列表标题inheritance它们的格式。 所以你必须做的是确保标题单元格也启用了自动换行function。 作为一种替代方法,你可以在之后添加wrap属性,就像这样:

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

我迄今为止唯一find的解决方法是插入我需要的行,然后插入并删除一行。 出于某种原因,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 

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