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