我想将示例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
答案 0 :(得分:3)
要仅将A1
上的sheetA
格式(包括条件格式)复制到A1
上的sheetB
,您可以使用以下内容:
Worksheets("sheetA").Range("A1").Copy
Worksheets("sheetB").Range("A1").PasteSpecial xlPasteFormats
如果您不想放弃A1
上单元格sheetB
上的当前条件格式,只想在A1
上添加sheetA
条件格式你也可以使用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
请注意,您希望一次存储多个公式。因此,您需要一个数组变量来保存它而不再是字符串变量。
我不确定你在做什么。但它确实对我有用(应该如此):
答案 1 :(得分:2)
为什么不取出DisplayFormat并保持这样:
t1.Interior.Color = s1.Interior.Color
答案 2 :(得分:1)
这应该有用 - 至少我了解你的要求
Set s1 = PeopleSheet.Range("G3:G9").DisplayFormat
Set t1 = TargetSht.Range("F15:F21")
t1.Interior.Color = s1.Interior.Color