引用单元格但保留源单元格中的文本格式

Aur*_*ius 5 excel excel-formula

我有一个包含一些文本的单元格。说单元格A1。

此文本以某种方式格式化 - 前几个字是粗体、换行符、不同的字体大小等

当我引用此单元格时,请在单元格 B1 中说:

=A1
Run Code Online (Sandbox Code Playgroud)

在 B1 中,我只得到一长串文本,其中没有 A1 上存在的任何格式

有没有办法引用和保留格式?

我可以使用格式刷,它会识别单元格内的换行符,但仍然无法识别部分粗体等方面。

Gre*_*edo 4

根据我的评论:

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
Run Code Online (Sandbox Code Playgroud)

上面的代码意味着每当对单元格进行任何更改时A1具体来说 A1- 这样代码不会在每次在工作表上进行更改时执行 - 这样做会减慢一切速度),其中的任何内容都会A1被复制到B2

用法


使用时,只需

  • 右键单击工作表的名称(底部的选项卡),然后选择“查看代码”
  • 将代码粘贴到
  • 将任何单元格引用更改为您想要的(即替换[A1][A3][A1:A4][blah]即根据您的需要
  • 关上窗户。要保存工作簿,如果您想保留宏,则必须另存为 .xlsm 或 .xlb

笔记


  • [A1]是 的简写ThisWorkbook.ActiveSheet.Range ("A1")。通常,我建议不要使用它,ActiveSheet因为如果代码在 中的任何工作表上运行ThisWorkbook,它将复制并粘贴到该工作表A1和上B1,而您可能只需要特定工作表上的特定单元格。
    • 但在本例中,代码仅适用于一张纸,因此这不是问题。
  • 所有这些changing都是必要的,因为复制/粘贴会触发更改事件;即宏会一遍又一遍地自行触发,直到 Excel 停止它 - 不理想!我声明的变量changing只是充当停止程序执行本身的信号。

  • @DarrenBartrup-Cook 我认为相关的短语是**“我能想到”**。关闭事件_可能_可以,但是你必须考虑每一种可能性,以确保你不会搞砸。使用“更改”方法,您可以确定它不会干扰其他代码,因为它是完全独立的。这就是为什么我更喜欢它,尽管正如我所说,或者至少在这个例子中,任何一个都可以。 (3认同)
  • @DarrenBartrup-Cook 虽然这是一种选择,但我实际上发现这种方法更可取;通过使用“更改”标志,您不会干扰您真正关心的代码的其他部分,并且您可能希望为其启用事件。 (2认同)