在工作表(非表单)中使用时,调整VBA中的ActiveX控件re Szing和Zorder
我进行了广泛的搜索,没有找到ActiveX控件/OLE对象的完整规范,我对它们是否相同以及如何在VBA中引用它们感到困惑。 我在MSDN中看到的材料非常浅薄和模糊,我通常的备忘单在这个咳嗽芯片上没有提及皮尔逊咳嗽 我在一个名为cChart的类模块中有以下代码:在工作表(非表单)中使用时,调整VBA中的ActiveX控件re Szing和Zorder,vba,excel,Vba,Excel,我进行了广泛的搜索,没有找到ActiveX控件/OLE对象的完整规范,我对它们是否相同以及如何在VBA中引用它们感到困惑。 我在MSDN中看到的材料非常浅薄和模糊,我通常的备忘单在这个咳嗽芯片上没有提及皮尔逊咳嗽 我在一个名为cChart的类模块中有以下代码: Option Explicit Public WithEvents ch As Chart Private Sub ch_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVa
Option Explicit
Public WithEvents ch As Chart
Private Sub ch_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal X As Long, _
ByVal Y As Long)
Debug.Print X & Chr(9) & Y
End Sub
我在一个名为cTextBox的类模块中有以下代码:
Option Explicit
Public WithEvents tb As msforms.TextBox
Public cht As Chart
Dim ws As Worksheet
Private Sub Class_Initialize()
Set ws = ActiveSheet
End Sub
Private Sub tb_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
cht.Parent.Activate
' I want to do this but I cant...
tb.ZOrder msoSendToBack
' And I'm forced to do this
ws.Shapes("TextBox1").ZOrder msoSendToBack
End Sub
Public Sub alignObjects()
On Error GoTo objectsNotSet
tb.Top = cht.Top 'at least, I would like to be able to do this line...
objectsNotSet:
Debug.Print timeStamp(Caller:=cModuleName, Context:=cMyName, message:="ERROR")
End Sub
在标准模块中:
Option Explicit
Public chrt As cChart
Public txtB As cTextBox
Sub initChart()
Set chrt = New cChart
Set chrt.ch = ActiveChart
End Sub
Sub inittb()
Set txtB = New cTextBox
Set txtB.tb = ActiveSheet.OLEObjects("TextBox1").Object
Set txtB.cht = chrt.ch
End Sub
这只是测试代码,我在(手动)运行initChart之前手动选择图表,然后手动运行inittb
我想摆脱这条线
ws.Shapes("TextBox1").ZOrder msoSendToBack
但在Form.TextBox对象中看不到名称或索引属性,因此无法执行以下操作:
ws.Shapes(tb.Name).ZOrder msoSendToBack
我是否需要将Form.TextBox对象重新转换为形状,以定位和调整其大小,并执行其他有用的操作,如控制其Z顺序和可见性
我可以不使用Form.XXXX对象来获取名称或索引吗?我真的需要将这些硬编码到shape对象中吗
如果可能的话,有人能告诉我这些对象规范的大致方向吗?似乎没有一种明显的方法可以从TextBox对象返回到其主体形状。您可以在
cTextBox
(Public shp As Shape
)中添加一个新字段来保存对宿主形状对象的引用:似乎不必要,但它至少提供了一个“干净”的解决方法。@TimWilliams是的,谢谢。我会照你说的做。我认为你评论中的关键词是“主持人形象”。。。比我最初的“流浪文本框”方法要好得多。