【问题标题】:reference a cell but keep formatting of text from source cell引用单元格但保留源单元格中的文本格式
【发布时间】:2021-04-14 16:41:46
【问题描述】:

我有一个单元格,里面有一些文字。 说单元格 A1。

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

当我引用这个单元格时,比如在单元格 B1 中:

=A1

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

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

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

【问题讨论】:

  • 一般来说,,公式不能拾取格式。
  • 如果您愿意在单元格B1 上手动使用格式刷,您愿意手动复制和粘贴吗?这将保留所有格式。或者使用Worksheet_Change() 事件启动一个宏,将A1 复制并粘贴到B1?这样,每当A1 的文本格式等内容发生变化时,B1 就会更新为 everything

标签: excel excel-formula


【解决方案1】:

根据我的评论:

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](即命名的单元格/范围))
  • 关闭窗口。要保存工作簿,如果要保留宏,则必须另存为 .xlsm 或 .xlb

备注


  • [A1]ThisWorkbook.ActiveSheet.Range ("A1") 的简写。通常我会建议不要将其用作ActiveSheet,这意味着如果代码在ThisWorkbookany 工作表上运行,它将复制并粘贴到A1B1该工作表,而您可能只需要特定工作表上的特定单元格。
    • 但在这种情况下,代码仅适用于 1 张纸,所以这不是问题。
  • 所有changing 的东西都是必要的,因为复制/粘贴会触发更改事件;即宏会一遍又一遍地触发自身,直到 Excel 停止它 - 不理想!我声明的changing 变量只是作为一个信号来停止程序自行执行。

【讨论】:

  • 而不是changing 使用Application.EnableEvents = False & Application.EnableEvents = True
  • @DarrenBartrup-Cook 虽然这是一个选项,但我实际上发现这种方法更可取;通过使用changing 标志,您不会干扰您真正关心的代码的其他部分,并且您可能希望启用事件。
  • 我看不出如果你在复制之前的那一行禁用它并在复制之后的那一行重新启用它会如何干扰。在我能想到的这么小的时间范围内,没有其他事件会发生。
  • @DarrenBartrup-Cook 我认为相关的短语是“我能想到”。关闭事件可能没问题,但你必须考虑每一种可能性,以确保你没有搞砸。使用changing 方法,您可以确定它不会干扰其他代码,因为它是完全独立的。这就是我喜欢它的原因,尽管正如我所说,或者至少这个例子,两者都可以。
  • changing 更可取的示例是Worksheet_Calculate 事件。如果您的更改事件触发了Activesheet.calculate,那么在eventsenabled = False 设置下,Worksheet_Calculate 事件不会触发(即使您希望它触发),而changing 设置仅禁用 Worksheet_Change 重新触发,Calculate 事件将正常工作。然后,如果Calculate事件本身触发Worksheet_ChangeWorksheet_Change事件将被“If changing Then Exit Sub”禁用以防止循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
相关资源
最近更新 更多