我在vba中创建了一个Interior变量来存储特定单元格的样式。 Excel允许我执行此操作,但是当我尝试将该样式应用于任何其他单元格时,它将无法正常工作。
Sub JustTest()
Dim X As Interior
Set X = Range("H12").Interior 'stores the Interior values into X
X.TintAndShade = -0.05 'could alter the values if needed to
Set Range("H15").Interior = X 'this line does not work
End Sub
我期望我可以(在此示例中)将样式从H12范围复制到H15,但是出现运行时错误438。 这样,我可以在运行时更改Interior的值。 我想这很简单,但我是个笨蛋。有人知道吗?预先感谢!
答案 0 :(得分:0)
您可以使用sub来设置室内的所有(非对象)属性,从而实现所需的功能。可以使用Set Range("H15").Interior = X
来代替Call setInterior(Range("H15"),X)
语句。
Sub setInterior(rg As Range, rgInt As interior)
Dim rangeInt As interior
Set rangeInt = rg.interior
On Error Resume Next
With rangeInt
' .Application
.Color = rgInt.Color
.ColorIndex = rgInt.ColorIndex
' .Creator
' .Gradient
.InvertIfNegative = rgInt.InvertIfNegative
' .Parent
.Pattern = rgInt.Pattern
.PatternColor = rgInt.PatternColor
.PatternColorIndex = rgInt.PatternColorIndex
.PatternThemeColor = rgInt.PatternThemeColor
.PatternTintAndShade = rgInt.PatternTintAndShade
.ThemeColor = rgInt.ThemeColor
.TintAndShade = rgInt.TintAndShade
End With
End Sub
对对象/只读属性进行了注释,但出于完整性考虑而显示。 InvertIfNegative
有时似乎有错误,因此使用On Error Resume Next
语句可以避免出现问题。