将一个范围内的一个单元格的仅链接格式链接到其他范围内的其他单元格

时间:2019-03-11 06:52:08

标签: excel vba

我有一张由2个范围(相同大小)组成的Excel工作表,如图所示。 Sample Picture。现在,我想将较高范围的每个单元格的格式链接到较低范围的每个对应的单元格。我试过粘贴为链接图像选项,但是根据我的需求那没用。 到目前为止,我发现了以下vba代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Clr

Clr = Me.Range("A1").Interior.Color
Me.Range("A5").Interior.Color = Clr
End Sub

用于单个单元格时哪个可以。但是当我将其修改为如下所示的整个范围时:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Clr

    Clr = Me.Range("A1:B3").Interior.Color
    Me.Range("A5:B7").Interior.Color = Clr
End Sub

它不再正常工作。请帮我。任何修改/新方法将不胜感激。也不要使用循环,因为它只是一个样本工作表,而我的实际工作表要大得多。

1 个答案:

答案 0 :(得分:1)

我将大大简化我的答案,因为我不知道您要如何应用它,但是,我会通过复制然后粘贴特殊格式来做到这一点。

Public Sub CopyPasteSpecialFormats()
    Range("rngSrcData").Copy
    Range("rngFirstCellToCopyTo").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub

将上面的代码扔到模块,更改方法或您要调用的某种方式中。

Example

在上图中,我在单元格 A1:E5 上创建了一个名为 rngSrcData 的命名范围。我还在左上角的单元格上创建了​​一个命名范围,该范围代表粘贴特殊操作的目标。该范围的名称为 rngFirstCellToCopyTo ,在显示的图像中,它在单元格 A7 中定义。

然后我运行宏,它复制单元格的格式。

只要在命名范围内插入,或者确保扩展命名范围超出现有范围,请确保更新命名范围。

或者,您可以编写一些VBA来查找要从中复制的矩阵。关于目的地的最好之处在于,它只是您需要担心的最左上角的单元格,因此您不必为此考虑太多。

正如我最初所说,我使解决方案非常简单。如果您希望每次工作表更改时都强制使用单元格格式,那么这也将起作用...

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Application.ScreenUpdating = False

    Range("rngSrcData").Copy
    Range("rngFirstCellToCopyTo").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False

    Target.Select

    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

...有点笨拙,但可以完成工作。不过,您还需要考虑所有标准的“撤消”功能都是无效的。这是您需要考虑的事情。

也可以更新已更改的单个单元格,但是您需要更多逻辑来确定已更改的单元格的偏移量。另外,更改后的事件并不会触发所有操作,仅触发单元格数据更改而不会触发格式更改。

我希望有帮助。