我有一个单元格,里面有一些文本。比如说A1单元格。
这个文本以某种方式格式化 - 前几个单词是粗体,有换行、不同的字体大小等等。
当我在B1单元格中引用这个单元格时:
=A1
在B1单元格中,我只获得了一段没有A1单元格中存在的格式的长字符串。
有没有办法引用并保留格式?
我可以使用格式刷,它会识别单元格中的换行符,但是部分粗体写作等方面仍然无法识别。
我有一个单元格,里面有一些文本。比如说A1单元格。
这个文本以某种方式格式化 - 前几个单词是粗体,有换行、不同的字体大小等等。
当我在B1单元格中引用这个单元格时:
=A1
Private changing As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Address = [A1].Address Or changing Then Exit Sub
changing = True
[A1].Copy [B1]
changing = False
End Sub
A1
进行更改时(具体地是A1
- 这样代码就不会在表格上每次进行更改时都执行 - 这样会使所有操作变慢),A1
中的内容将被复制到B2
中。
用法
要使用,只需:
[A1]
替换为[A3]
或[A1:A4]
或[blah]
(即命名的单元格/范围),具体取决于您的需要)[A1]
是ThisWorkbook.ActiveSheet.Range("A1")
的简写。通常我建议不要使用它,因为ActiveSheet
表示如果代码在ThisWorkbook
的任何表格上运行,它将复制并粘贴该表格的A1
和B1
,而您可能只想在特定工作表上使用特定单元格。changing
操作都是必需的,因为复制/粘贴触发了一个更改事件;即宏会一遍又一遍地触发自己,直到Excel停止它 - 这不是理想的!我声明的changing
变量仅充当信号,以停止程序执行自身。changing
,而是使用 Application.EnableEvents = False
和 Application.EnableEvents = True
。 - Darren Bartrup-CookWorksheet_Calculate
事件时,changing
的使用会更可取。如果您的更改事件触发Activesheet.calculate
,则在eventsenabled = False
设置下,即使您希望触发它,也不会触发Worksheet_Calculate
事件,而changing
设置仅禁用Worksheet_Change
的重新触发,Calculate
事件将正常工作。然后,如果Calculate
事件本身触发了Worksheet_Change
,则通过"If changing Then Exit Sub
"禁用Worksheet_Change
事件以防止循环。 - Greedo
B1
,那么您是否愿意手动复制和粘贴呢?这样可以保留所有的格式。或者使用Worksheet_Change()
事件来启动一个宏,将A1
复制并粘贴到B1
中?这样,每当更改A1
的文本格式等内容时,B1
就会更新 所有 内容。 - Greedo