【发布时间】:2015-09-22 09:40:32
【问题描述】:
序言
最近,我一直在处理包含大量文本和 cmets 的大型 Excel 电子表格(多人处理单个文档)。一次又一次地编辑它是非常困难的(考虑到新的笔记),因为文档导航在某些时候变得非常复杂。所以,我决定我需要一些工具来获取/设置我在某一时刻实际需要的数据(单个单元格内容、相应的评论内容、单元格行的额外数据)。
到目前为止做了什么
幸运的是,开始很容易。我用 4 个文本框(2 个只读,2 个用于编辑)填充了用户窗体,其中填充了所选评论的数据(按索引),以及一些允许接受/放弃更改和在评论单元格之间导航的按钮。
问题本身
首先,当我从单元格中获取文本时,我需要保持文本格式。目前我没有采取任何格式,只是文本。我通过谷歌搜索发现我可以逐个字符设置格式,有点像下面的伪代码:
For i = 0 to Cells(Row, Col).Text.Length
MyTextBox.Text(i).FormatOption1 = Cells(Row, Col).Text(i).FormatOption1
...
MyTextBox.Text(i).FormatOptionN = Cells(Row, Col).Text(i).FormatOptionN
Next
但是这种方法感觉很愚蠢。所以,问题一是:
有没有一种方法可以复制全文格式(单元格中每个字母的字体、B/I/U、颜色、大小)以及文本,从单元格到 TextBox 并向后复制,只需一行代码?
其次,我实际上需要一些在用户窗体中的格式化工具来在我的表单中进行上述文本格式化,所以问题二是:
有没有办法将格式化工具(位于 Home->Font 菜单中的工具,或者当您在单元格中选择一些文本时弹出菜单)添加到 UserForm 以编辑 TextBox 对象中的文本? em>
附:使用 Excel 2013
补充一点: 我以某种方式假设,如果没有直接的方法来做我在问题中描述的事情 - 必须有一些以前由某人创建的定制工具箱对象(类似于 EvenRicherTextBox)。我简直不敢相信这个问题从未出现过,但我不知道我需要使用什么关键字才能找到该对象。
【问题讨论】:
-
可能有一种方法可以做到这一点,但它会占用大量代码。 vba 中没有“格式”标签,格式的每一部分都是一个单独的代码字符串。您所追求的格式类型是否相当有限,即粗体、斜体、基本字体等 - 或者您是否正在寻找相当多的种类?如果您在两个单元格之间记录复制格式,它将让您了解某些格式可能需要的 VBA 命令。
-
这里出了点问题。 MyTextBox.Font.Bold = Cells(Row,Col).Font.Bold,这非常适合我,(以及斜体和下划线选项),不需要遍历每个字符文本。是否有任何特定选项不能以这种方式工作??
-
哦,也许我明白了,每个单元格中有很多行,每行都有不同的格式,对吧?
-
@A.S.H 它可能不仅仅是一条线。我可以在其中一行中突出显示单词,甚至是一个字母。它看起来更像是 MS Word 文本,而不是适合 excel 的内容。
-
@Trum 从理论上讲,我在第二个问题中谈到的菜单可以由我自己制作,因为我们在 Cell 和 TextBox 对象的对象和方法中获得了所有功能。但是,对已经在原始程序中实现的东西进行电玩似乎是一条错误的道路。
标签: vba excel formatting