Vba 如何将内部对象指定给范围?
我在vba中创建了一个内部变量来存储某个单元格的样式。Excel允许我这样做,但当我尝试将该样式应用于任何其他单元格时,它不起作用Vba 如何将内部对象指定给范围?,vba,Vba,我在vba中创建了一个内部变量来存储某个单元格的样式。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
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。
这样做可以在运行时更改内部值。
我想这很简单,但我是个笨蛋。有人有主意吗?提前谢谢 您可以使用子对象来设置内部的所有(非对象)属性,从而实现您想要的。您可以使用
调用setInterior(Range(“H15”),X)来代替设置范围(“H15”).Interior=X
语句
对象/只读属性已注释,但为了完整性而显示InvertIfNegative
有时似乎有错误,因此错误上的On error Resume Next
语句将继续执行,以避免出现问题。您可以使用一个子集来设置内饰的所有(非对象)属性,从而实现所需的功能。您可以使用调用setInterior(Range(“H15”),X)来代替设置范围(“H15”).Interior=X
语句
对象/只读属性已注释,但为了完整性而显示InvertIfNegative
有时似乎有错误,因此错误上的继续下一个
语句以避免出现问题。您正在将对该单元格内部的引用存储到X
中。然后通过存储在X
中的引用更改该单元格的内部。不能创建内部的新实例,因此不能将一个单元的内部指定给另一个单元。您只能逐个将一个内部的属性指定为与另一个内部的属性相等。是的,@GSerg是正确的。Interior
属性是只读的…您正在将对该单元格内部的引用存储到X
。然后通过存储在X
中的引用更改该单元格的内部。不能创建内部的新实例,因此不能将一个单元的内部指定给另一个单元。您只能逐个将一个内部的属性指定为与另一个内部的属性相等。是的,@GSerg是正确的。Interior
属性是只读的…您的两个内部都称为rgInt
。Thx。已应用更正。切勿在测试后使用“查找和替换”使代码更清晰……:-)谢谢我原以为会有一个内置的vba函数,但效果很好!;)您的两个内饰都称为rgInt
.Thx。已应用更正。切勿在测试后使用“查找和替换”使代码更清晰……:-)谢谢我原以为会有一个内置的vba函数,但效果很好!;)
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