【问题标题】:Copy background color from one cell to cell in separate sheet using ms-excel?使用ms-excel将背景颜色从一个单元格复制到另一个工作表中的单元格?
【发布时间】:2016-06-25 17:45:06
【问题描述】:

我想复制背景颜色,例如 sheetA 单元格 A1 到 表 B A1。

单元格 A1 使用条件格式,我可以简单复制但不能启用条件格式。

这里是代码

Public Sub CopyColor()
Dim PeopleSheet As Worksheet
Dim TargetSht As Worksheet

'Define what our source sheet and target sheet are
Set PeopleSheet = ThisWorkbook.Worksheets("People")
Set ProcessSheet = ThisWorkbook.Worksheets("Process")
Set TechnologySheet = ThisWorkbook.Worksheets("Technology")
Set BusinessSheet = ThisWorkbook.Worksheets("Business")

Set TargetSht = ThisWorkbook.Worksheets("Summary")





Set s1 = PeopleSheet.Range("G3:G9").FormatConditions(1)

Set t1 = TargetSht.Range("F15:F21")

t1.Interior.Color = s1.DisplayFormat.Interior.Color

最后一行t1.Interior.Color = s1 给出错误Run-time error '13': Type mismatch

更新

更新 2 @Ralph

这是分别应用代码前后的结果。

只有f15 不影响其他人?

更新 3

这是我能想到的最好的证据,当我运行 VB 时,它只选择目标单元格并要求我粘贴结果。所以视频左下角的状态栏。

【问题讨论】:

  • 请帮助社区,没有响应者给出正确的解决方案。

标签: excel vba


【解决方案1】:

要仅将格式(包括条件格式)从sheetA 上的A1 复制到sheetB 上的A1,您可以使用以下命令:

Worksheets("sheetA").Range("A1").Copy
Worksheets("sheetB").Range("A1").PasteSpecial xlPasteFormats

如果您不想放弃sheetB 上单元格A1 上的当前条件格式,而只想在sheetA 上添加来自A1 的条件格式,您也可以使用xlPasteAllMergingConditionalFormats。但是,然后该值将被复制,您必须将其存储(之后再将其写回)。所以,这种情况下的完整代码可能是这样的:

Dim strTemp As String

strTemp = Worksheets("sheetB").Range("A1").Formula
Worksheets("sheetA").Range("A1").Copy
Worksheets("sheetB").Range("A1").PasteSpecial xlPasteAllMergingConditionalFormats
Worksheets("sheetB").Range("A1").Formula = strTemp

更新:

显然,工作表名称和范围已更改(在更新中)。所以,更新后的代码应该是:

Dim varTemp As Variant

varTemp = Worksheets("Summary").Range("F15:F21").Formula
Worksheets("People").Range("G3:G9").Copy
Worksheets("Summary").Range("F15:F21").PasteSpecial xlPasteAllMergingConditionalFormats
Worksheets("Summary").Range("F15:F21").Formula = varTemp

请注意,您希望一次存储多个公式。因此,您需要一个数组变量来保存它,而不是一个字符串变量。

我不确定你在做什么。但它确实对我有用(应该如此):

【讨论】:

  • 感谢您的输入,但我收到一个错误,您能看到我的范围语法正确吗?
  • 对于复制和粘贴,您只能使用连接范围。在您的情况下,您似乎有两个要一次复制的单元格:G3G9(但不是两者之间的所有单元格)。因此,您必须进行两次复制和粘贴:一份用于G3F15,另一份用于G9F21
  • 不,Ralph 我想要G3 to G9 这样的范围,像G3:G9 这样说会出错。
  • 下次,请立即发布相关范围和工作表名称(如果您还不能正确调整给定的 VBA 代码),这样我们就不必浪费时间了。
  • 不确定你在做什么。但它肯定对我有用(因为它应该)。看看更新的解决方案。我猜你已经做出了另一个没有按预期工作的改编。然而,我们只能帮助您调试您提供给我们的内容。
【解决方案2】:

为什么不取出 DisplayFormat 并保持这样:

t1.Interior.Color = s1.Interior.Color

【讨论】:

    【解决方案3】:

    这应该可行 - 至少据我了解你在问什么

    Set s1 = PeopleSheet.Range("G3:G9").DisplayFormat
    Set t1 = TargetSht.Range("F15:F21")
    
    t1.Interior.Color = s1.Interior.Color
    

    【讨论】:

    • 我试过了,不就是把目标单元格变黑
    • 什么意思?这就是您所要求的-您的示例显示了。它消除了运行时错误并将条件格式颜色复制到目标单元格。你想让它做什么?我建议更新您的问题和代码
    • 它不起作用,请显示如果它适合你。对我来说,它只粘贴黑色背景单元格。
    • 您需要更改单元格以对应您的数据 - 我们只是使用您上面的范围。没有发布适当的数据,你就在浪费大家的时间
    • 你似乎很困惑。我已经放了整个 gif,你还想要什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多