gpt4 book ai didi

vba - Excel VBA 将单元格内容复制到 InkEdit 文本框并保留格式,包括颜色/粗体等

转载 作者:行者123 更新时间:2023-12-02 12:25:46 25 4
gpt4 key购买 nike

我有一张工作表,其中一些单元格具有彩色文本,并且为粗体/下划线/斜体。

我需要能够提取单元格内容并在保持相同格式的表单上显示信息。

我遇到过支持 RichText 的 InkEdit 控件,但我无法从单元格复制到此框。

请帮忙

最佳答案

问题似乎是 Excel 对象模型深深地隐藏了单元格内容的 RTF 格式,并且没有提供简单的方法来提取它。

这是一个看起来有点工作的拼凑:

Sub CopyRichText(source As Range, target As InkEdit)
Dim i As Long, n As Long
target.Text = source.Text
n = Len(target.Text)
For i = 1 To n
target.SelStart = i - 1
target.SelLength = 1
target.SelBold = source.Characters(i, 1).Font.Bold
target.SelColor = source.Characters(i, 1).Font.Color
target.SelFontName = source.Characters(i, 1).Font.FontStyle
target.SelFontSize = source.Characters(i, 1).Font.Size
target.SelItalic = source.Characters(i, 1).Font.Italic
'target.SelUnderline = source.Characters(i, 1).Font.Underline '-- doesn't work as expected!
Next i
target.SelStart = n
target.SelLength = 0
End Sub

像这样使用:

Private Sub UserForm_Initialize()
CopyRichText Range("A1"), Me.InkEdit1
End Sub

例如,在 A1 中我有:

enter image description here

然后当我显示用户表单时,它看起来像:

enter image description here

inkedit 的 SelUnderline 方法中似乎存在一个彻底的错误。取消注释该行即可明白我的意思。也许有一些解决方法。

我怀疑上面的内容有些脆弱。我还没有测试过那么多。如果它对你有用(也许经过适当调整)——那就太好了。如果没有,我怀疑有一种使用剪贴板的深层魔法方法。 InkEdit 控件没有粘贴方法 - 但它确实有一个 Hwnd 方法,听起来它可以为 Window 的粘贴提供目标。

关于vba - Excel VBA 将单元格内容复制到 InkEdit 文本框并保留格式,包括颜色/粗体等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38674641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com