gpt4 book ai didi

vba - MS Excel 2003 - 处理形状时 Excel VBA 中的简单取消选择问题

转载 作者:行者123 更新时间:2023-12-04 21:26:37 25 4
gpt4 key购买 nike

所以我有一个 Excel 工作簿,里面有一个全局映射方案。所以我在excel中对每个国家都有一个形状。根据区域选择,相对于数据/查询,它将以各种方式对区域/国家进行着色。
所以我知道如何在颜色、渐变阴影等方面操纵每个形状......
我不知道该怎么做是在子例程结束时“取消选择”形状。我的代码看起来像这样(非常简单):

sheet1.shapes("CountryName").select
selection.shaperange.fill.solid
selection.shaperange.fill.visible = true
selection.shaperange.fill.forecolor.rgb=rgb(110,110,110)
selection.shaperange.fill.onecolorgradiend msogradienthorizontal, 2, 0.45
好的,所以从一个形状/国家/地区到另一个形状/国家/地区,“取消选择”并不是什么大不了的事,因为焦点会跳跃,但最后????
我已经猜到/尝试了很多东西,但可惜没有运气
谢谢!

最佳答案

你的源代码最后一行有错字,...gradiend --> ...gradient

selection.shaperange.fill.onecolorgradienT msogradienthorizontal, 2, 0.45

“取消选择”形状对象的一种非常简单的方法是添加这行代码
sheet1.[A1].select

这会将焦点移动到工作表中的单元格 A1,从而远离您的对象。非常粗鲁,我不推荐它。我也不建议按照上面的建议“保存当前选择”,因为我们不知道光标是在单元格中还是在另一个(范围)对象中。

更好的方法是在整个脚本中完全避免“选择”。将您的形状分配给一个对象并操作该对象(注意:我在 sheet3 中使用测试中的第一个可用对象进行了模拟),即
Sub test()
Dim MyShape As Shape
Set MyShape = Sheet3.Shapes(1) ' or whatever shape according to the user input
With MyShape.Fill
.Solid
.Visible = True
.ForeColor.RGB = RGB(110, 110, 110)
.OneColorGradient msoGradientHorizontal, 2, 0.45
End With
End Sub

更好的是,如果您正在处理一个为您提供形状名称的列表,请执行以下操作
Sub Test()
'
' get the shape's name into ShapeName
' ...

ColorShape Sheet3.Shapes(ShapeName)

' ...

End Sub

Sub ColorShape(MyShape As Shape)
With MyShape.Fill
.Solid
.Visible = True
.ForeColor.RGB = RGB(110, 110, 110)
.OneColorGradient msoGradientHorizontal, 2, 0.45
End With
End Sub

希望这可以帮助
祝你好运

关于vba - MS Excel 2003 - 处理形状时 Excel VBA 中的简单取消选择问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1671426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com