VBA Excel – Word自动换行
我正在用一个特定的公式创build一小段VBA代码,但是它有几个if
语句,其中一个发起了一个双行string(用vbNewLine
)问题是我看不到文本。
所以我想把它包装起来,但是每次我设置ActiveCell.WrapText = True
,都没有任何反应。
我检查了一个消息框。 我将WrapText
设置为True,我用MessageBox返回属性值来确认,而且它仍然是False。
我被告知也使用ActiveCell.Rows.AutoFit
,但如果文本没有被包装, AutoFit
什么也不做。
任何想法,我可能在这里做错了吗?
尝试:
Sub WrapandFit() ActiveCell.WrapText = True ActiveCell.EntireRow.AutoFit End Sub
它为我工作。 确保您的屏幕更新也设置为true。
UDF(使用关键字Function的过程)仅返回值。 他们不能更改Excel对象模型的其他部分,如单元格格式。 只有子例程(使用关键字Sub的过程)可以做到这一点。
在inputUDF之前,您需要正确格式化单元格。 或者,您可以使用工作表更改事件子来在事实之后对其进行格式化。
closures/打开整个表单行的单词换行可以通过下面显示的VB代码完成:如果第一行设置为true,则excel会inheritance整个表单的属性,除非您使用另一个代码专门closures该表单。
MyWorkSheet.Rows.WrapText = True
要closures特定行的包装属性,请执行以下操作:
MyWorkSheet.Rows(8).WrapText = False
我怀疑你试图在合并的单元格中包装文本。 如果是的话,你不能简单地打电话给:
MyWorkSheet.Rows.WrapText = True
相反,你必须模拟包装操作。 去年我从http://blog.contextures.com/archives/2012/06/07/autofit-merged-cell-row-height/find了代码。
Private Sub Worksheet_Change(ByVal Target As Range) Dim MergeWidth As Single Dim cM As Range Dim AutoFitRng As Range Dim CWidth As Double Dim NewRowHt As Double Dim str01 As String str01 = "OrderNote" If Not Intersect(Target, Range(str01)) Is Nothing Then Application.ScreenUpdating = False On Error Resume Next Set AutoFitRng = Range(Range(str01).MergeArea.Address) With AutoFitRng .MergeCells = False CWidth = .Cells(1).ColumnWidth MergeWidth = 0 For Each cM In AutoFitRng cM.WrapText = True MergeWidth = cM.ColumnWidth + MergeWidth Next 'small adjustment to temporary width MergeWidth = MergeWidth + AutoFitRng.Cells.Count * 0.66 .Cells(1).ColumnWidth = MergeWidth .EntireRow.AutoFit NewRowHt = .RowHeight .Cells(1).ColumnWidth = CWidth .MergeCells = True .RowHeight = NewRowHt End With Application.ScreenUpdating = True End If End Sub
对我来说,下面的代码工作。 (只设置改变标题行,(改变范围))
ActiveSheet.Range("A1:R1").Select With Selection .WrapText = True End With