OOobbs3/87
質問
Calcシート上に配置したボタンの位置とサイズをマクロ(Basic)で変更したいのですが、どのようにすればよいでしょうか? 以上、よろしくお願いします。 回答
Sub ChangeButtonSizeAndPosition oCurrentController = ThisComponent.getCurrentController() oSheets = ThisComponent.getSheets() oSheet = oSheets.getByIndex(0) oDrawPage = oSheet.getDrawPage() oForms = oDrawPage.getForms() oForm = oForms.getByIndex(0) oButtonModel = oForm.getByName("btn") oShape = FindControlDrawingObject(oDrawPage, oButtonModel) If NOT IsNull(oShape) Then Dim aPos As New com.sun.star.awt.Point Dim aSize As New com.sun.star.awt.Size oCell = oShape.getAnchor() aPos.X = oCell.Position.X aPos.Y = oCell.Position.Y aSize.Width = oCell.Size.Width aSize.Height = oCell.Size.Height oShape.setPosition(aPos) oShape.setSize(aSize) End If End Sub ' コントロールに対応した図形描写オブジェクトをドローページから見つける Function FindControlDrawingObject( _ oDrawPage As Object, oControlModel As Variant) As Variant Dim oFound As Variant For i = 0 To oDrawPage.getCount() -1 step 1 oShape = oDrawPage.getByIndex(i) If HasUnoInterfaces(oShape, "com.sun.star.drawing.XControlShape") Then If EqualUnoObjects(oShape.getControl(), oControlModel) Then oFound = oShape End If End If Next FindControlDrawingObject = oFound End Function この例ではセルにアンカーされたボタンのサイズをセルのサイズと位置に合わせています。FindControlDrawingObject 関数はグループ化された場合見つけられませんので、その場合はもう少し複雑な関数を書く必要があります。
感想,コメント,メモ
|