自动调整行高以匹配可扩展文本框

时间:2015-05-01 20:34:42

标签: excel vba excel-vba

我已将文本框插入行范围。文本框的目的是允许输入文本的动态格式化,而不仅仅是将文本输入单元格。我希望文本框可以扩展,这在文本框设置中很容易完成,并且相应的行随之展开,这并不容易。我的文本框下面有数据单元格,当它扩展时,它会覆盖那些单元格。

我很感激任何与vba代码的协助,允许行高在文本框高度调整时自动调整。我在线搜索,虽然我发现了一个类似的问题,但给出的答案建议使用一个用户表单文本框,该文本框提供给单元格但不符合我的格式需求。另外,要清楚,这是从Excel中的插入菜单中找到的文本框。

我想代码看起来像:

On change event (linked to textbox #)'not sure if this is possible
dim x as long, commentcell_rng as range
set commentcell_rng as thisworkbook.sheets("Sheet1").range("A81:N81")
    x = textbox # height 'Not sure how to return textbox height also I don't know if text box height matches cell height unit of measure
commentcell_rng.entirerow.height = x

我不确定我是否朝着正确的方向前进,但希望这能概述我想要发生的事情。

2 个答案:

答案 0 :(得分:2)

正如马斯卡罗先生所提到的那样,你无法触发形状中的事件。 要将行设置为形状的高度,请使用

Range("A1").RowHeight = sheet1.Shapes("name_of_shape").Height

无需单位转换。 但是,请确保将形状属性设置为“不要移动或使用单元格调整大小”
从形状内部的文本更改触发的唯一方法是运行一个计时器事件,这可以通过几种方法实现,尽管代码很难。另一个选项可能是用户确认文本更改的按钮,可以在单击事件中触发,然后设置行高。

答案 1 :(得分:0)

我有同样的要求,刚刚找到了一个解决方案,其中包含@rayzinnz代码。

我有一个文本框,当输入更多文本时,它会向下调整大小。与文本行相关的行高应相应调整大小,以便在工作表的其余部分保持顺序。

以下代码对我有用:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Cells.Count = 1 And IsEmpty(Target) Or Not IsEmpty(Target)Then
    Range("A9").RowHeight = ActiveSheet.Shapes("Scope_IL_Definition_TB").Height
End If

End Sub

这是放在特定工作表的代码中。 当用户停止键入并在文本框外部单击时,将调整行高。