0

我最近发布了一个关于如何格式化输入框中文本的第一部分并将其附加到单元格中现有文本的问题。

因此,例如,如果我有一个带有...的单元格

23/08/2013:你好今天好吗

24/08/2013:客户今天感觉很好

我双击单元格,我得到一个输入框来输入评论。我接受评论..在 VBA 代码中添加今天的日期,然后使用它附加并格式化到现有代码

If Target.Column = NOTES_COL Then 'Add a note

    lngPos = Len(Target.Text)

    strNote = InputBox(Prompt:="Enter Note", _
      Title:="Notes", Default:="")


     If (Len(Trim(strNote)) > 0) Then
         If Target.Value = "" Then
           Target.Font.Bold = False
           newVal = Date & ": " & strNote
         Else
           newVal = Chr(10) & Date & ": " & strNote
         End If
         Target.Characters(Start:=lngPos + 1).Text = newVal
         Target.Characters(Start:=lngPos + 1, Length:=11).Font.Bold = True
     End If
End If

所以基本上这需要一个评论......在评论中添加一个日期,一个新行,然后将其附加到现有字符并格式化日期粗体。

这一切都很好,直到我超过 255 个字符,在最后一个解决方案中帮助我的海报警告过,但我认为它试图插入一个评论 > 255,而不是整个单元格长度。

我该如何解决这个问题......因为我可以在一个单元格中添加多个评论

问候米克

4

1 回答 1

0

在 SO here上讨论了一个类似的问题。根据该线程,问题在于该InputBox方法最多只允许 255 个字符。我自己验证了这一点。

该线程还建议使用用户表单。这是最好的选择,尤其是考虑到在单行输入框中输入超过 255 个字符可能会让人感到沮丧。例如,您将如何查看您已经输入的内容?

我能想到一些不太完善的选项:

让用户直接在另一个单元格中输入评论 - 例如,选择(我讨厌使用 select!)另一个单元格,然后让用户在其中放置他们想要的任何注释。然后运行代码将该单元格的值附加到目标单元格。

更疯狂的是调用外部程序,例如记事本(或 Mac 对应程序),保存并将该信息导入以附加到目标单元格。

所有这些选项都只是InputBox限制的解决方法。也许有经验的人可以想到一些更好的选择?


更新此外,使用添加到任何超过 255 个字符的内容
似乎存在问题。.Characters我怀疑这是因为.Characters方法(不是属性)设置为在textframe上工作,而不是在单元格值上工作。文本框实际上是一个与形状一起使用的对象。有趣的是,您在一个范围内使用它来编辑其值 - 很酷的技巧,由您提出的另一个问题提供。

一个解决方案是替换单元格值。然后,您可以将其.Characters用作对象来格式化单元格值的部分,正如我认为您已经尝试在其他问题中所做的那样。

于 2013-09-19T12:35:17.680 回答