注释要包装到Excel中的新行的文本

时间:2015-02-26 18:54:36

标签: excel vba excel-vba

我有一个带有评论部分的Excel电子表格,该部分由4行组成。 Row的评论部分由合并的单元格A51:AD51A52:AD52A53:AD53A54:AD54组成。我希望speadsheet的用户在第一行输入他们的整个注释,然后当他们按Enter键让评论分解为尽可能在四行中的每一行中填写,剩下的溢出(如果有的话)在最后一行。例如:

Comment Pre Wrapping

然后会变成:

enter image description here

我尝试过的事情:

  • 使用GetTextExtentPoint32测量文本的像素长度,然后将此长度与合并的单元格长度进行比较。我不得不最终硬编码列的长度,因为我无法正确计算出合并单元格的精确像素长度。到目前为止,这是最好的,但实际上似乎并不是一个好的解决方案 - 我特别不喜欢硬编码。
  • 我还尝试测量单元格的列宽,调用AutoFit,然后将新宽度与原始宽度进行比较,但由于自动调整宽度的原因,这似乎无法正常工作与当前宽度相同,即使文本肯定不适合单元格。这可能与合并的单元格有关,但我不确定。

确定文本是否适合合并单元格的最佳方法是什么?一旦我拥有了它,我就可以轻松地将其分解,只是确定它是否合适。

1 个答案:

答案 0 :(得分:0)

  • 使用固定宽度的字体。
  • 计算字符串x = Len(Range("A51").Value)
  • 的长度
  • 将x除以4以获得每行y = x / 4
  • 的字符数
  • 将每行的字符乘以字体字符的设置像素宽度。 z = y * pixelwidth
  • 设置列的宽度以匹配该像素宽度Range.ColumnWidth
  • 使用Mid()每行字符(y)来分解字符串。

我会为此查看一些总代码,但这应该会让你走上正确的轨道。