单元格 A1 包含文本“大胆的正常”。如果我在单元格 A2 中输入=A1
,则会显示“Bold normal”,但没有粗体样式。有什么办法可以让 A2 具有相同的内容和格式吗?
答案1
=
仅用于数据。字符串、整数等...您必须随后应用格式。Excel 中没有=copyformat(A1)
类型函数。
克隆格式的最简单方法是使用格式刷
答案2
在 VBA 中,您可以使用Range.Value(11)
属性复制带格式的单元格内容。11 代表xlRangeValueXML电子表格常量。语法为:
dest.Value(11) = src.Value(11)
目的地和源码分别表示目标和源范围。它们可能是单个单元格或相同大小的矩形区域。如果要从工作表中调用它,则必须定义 UDF 函数。这不是此类函数的典型用法,但它有效。有(至少)两种变体,您可以使用它。
变体 1。
Function CPF(src As Range, dest As Range) As String
On Error Resume Next
dest.Value(11) = src.Value(11)
On Error GoTo 0
End Function
在空白单元格中输入函数调用。
=CPF(A1, A2)
分隔符如您在本地定义的:逗号或分号。单元格内容(格式化文本常量)从 A1 复制到 A2。该函数返回一个空字符串,但您可以根据需要将其显示出来。如果对单元格值(A1 或 A2)进行了任何更改或编辑了单元格,则将重新计算函数。如果仅更改了格式,则无需重新计算。
变体 2。
您可以从名称框。在这种情况下,函数应返回对完成任务后被选中的单元格的引用。代码有两个可能版本。
版本 A(选择源,给出目标作为参数):
Function CNFx(dest As Range) As Range
Dim src As Range
Set src = Selection
On Error Resume Next
dest.Value(11) = src.Value(11)
On Error GoTo 0
Set CNFx = dest
End Function
必须选择要复制的单元格。目标地址作为参数给出。在名称框(在源单元格的工作表上)中输入例如:
CNFx(Sheet2!B5)
=
没有必要。复制后,目标单元格将被选中。
版本 B(源和目标均作为参数给出):
Function CNF(src As Range, dest As Range) As Range
On Error Resume Next
dest.Value(11) = src.Value(11)
On Error GoTo 0
Set CNF = dest
End Function
在里面名称框例如输入:
CNF(Sheet1!A2:A3, Sheet2!B5:B6)
复制后,目标单元格将被选中。这两个变体之间的区别在于,在第一个变体中,函数调用保留在工作表中,并在必要时重新计算,而在第二个变体中,它只执行一次并被删除。
笔记:使用格式刷您只能复制整个单元格的格式,而不能复制单个字符的格式。