我有一个宏用于从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
表格单元格被格式化为自动换行,但是当笔记插入表格时,单元格不会被包装。但是,如果我再次运行宏并插入一个新注释,则插入的前一个注释将显示为已包装,即使它没有发生任何事情,然后向下移动一行。我可以在代码或格式中做些什么来让它正确包装吗?
答案 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
看起来不太理想,但直到我知道正确答案是什么才能完成工作。