OOobbs/36
質問
あるセルを選択後にボタン(フォーム機能で作成したPUSHボタン)を押すと、そのボタンのタイトルをセルに書き込むようにしたいのです。 ボタンの名前を取得してクリップボードにコピーすることができれば、なんとかなりそうなのですが、そこが解りません。 実は、左マウスクリックのみでセルに記号や特定の文章を入れることができないかと考えていまして、ボタンのタイトルが取得できるのなら、いくつかボタンを作って、そのタイトルを変えるだけでそれが可能ではないかと思っています。 よろしくお願いします。 回答
しかし,クリップボードへコピーしなくてもボタンのタイトルをセルに書き込むことができます。 すこし試してみるとうまくいきました。また,意外なことも判明しました。 フォームでプッシュボタンを作成して,ボタンのラベルに文字を指定しておきます。
そして,ボタンをクリックしたときに実行されるように次のマクロの "push" を指定します。ファイルを作成しておきました Sub push(oSource) 'MsgBox oSource.Source.Model.Label Insert_Label(oSource.Source.Model.Label) End Sub Sub Insert_Label(sLabel As String) Dim oDoc As Object, oController As Object Dim oSelection As Object oDoc = ThisComponent oSelection = oDoc.getCurrentController().getSelection() oSelection.getCellByPosition(0,0).String = sLabel End Sub ボタンをクリックすると push が実行されます。このとき,oSource.Source.Model.Label を使ってそのボタンのラベル (表示されている文字列) を取得します。 Sub Insert_Label は選択セル範囲の左上に指定した文字列を書き込む下請けです。 push(oSource) についてですが,リスナーを使用されたことがあれば分かると思います。呼び出し側の情報などを保持しているオブジェクト変数をここであらかじめ指定しておくことで,Sub の中で使用することができます。 また,oSource.Source オブジェクトにも Label プロパティーがありますが,このプロパティーではラベルの文字列を取得することができません。設定専用で読み出し不可のようです。メソッドに setLabel メソッドしかないことからも分かります。さらに,Model オブジェクトを経ることで Label プロパティーを取得することができます。 以外なことは,リスナー以外の場所でも oSource に相当するオブジェクトを使用できたことです。 これを使えば,始めに作成したボタンをコピーしてラベルを変更するだけでさまざまな文字列を入力可能です。
|