Top > OOobbs2 > 42
  • The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
  • Go to OOobbs2/42.

** [[OOobbs2/42]] [#f2dc5bce]
-''サマリ'': チェックボックスへのマクロの設定
-''環境'': Calc
-''状態'': 解決
-''投稿者'': [[岡龍]]
-''投稿日'': 2007-06-27 (水) 23:55:10

*** 質問 [#x342c504]
はじめて質問します。

チェックボックスにマクロを設定する時、どうも上手く作動しないので教えてください。

○やりたい事

特定セルに文字が入力してある。(日本語) 例:B2に「ああ」
そのセルに対してチェックボックスをオンにすると「太字」になる。
チェックボックスをオフにすると元の書式設定になる。

という設定を施すにはどういうマクロを組むといいのでしょうか??
*** 回答 [#n2aaa4ba]
- Calc上のフォームに作成したチェックボックスの利用ですね。

例のファイルを作成しました &ref(OOobbs2-42.ods);

例では以下をチェックボックスのイベント「ステータスを変更したとき」に割り当ててあります。

 Sub Main
 Dim oDoc As Object
 Dim oForms As Object, oForm As Object
 Dim oCheckBox As Object
 Dim oSheet As Object
 Dim oCell As Object
   oDoc = ThisComponent
   oSheet = oDoc.getSheets().getByIndex(0)
   oCell = oSheet.getCellByPosition(1,1)
   oForms = oSheet.DrawPage.Forms()
   oForm = oForms.getByName("Standard")
   If oForm.hasByName("CheckBox") Then
     oCheckBox = oForm.getByName("CheckBox")
     
     If oCheckBox.State = 1 Then
       oCell.CharWeight = com.sun.star.awt.FontWeight.BOLD
       oCell.CharWeightAsian = com.sun.star.awt.FontWeight.BOLD
       oCell.CharWeightComplex = com.sun.star.awt.FontWeight.BOLD
     Else
       oCell.CharWeight = com.sun.star.awt.FontWeight.NORMAL
       oCell.CharWeightAsian = com.sun.star.awt.FontWeight.NORMAL
       oCell.CharWeightComplex = com.sun.star.awt.FontWeight.NORMAL
     End If
   End If
 End Sub

何も考えずにフォームにチェックボックスなどを作成すると、"Standard" という名前のフォームが作成されます。フォーム名はデザインモードでのフォームナビゲータなどで確認できます。

あとは、チェックボックスの状態 ''State'' により文字のウェイトを変更して普通と太文字を切り替えます。ウェイトの設定は以下の定数を利用します。
-http://api.openoffice.org/docs/common/ref/com/sun/star/awt/FontWeight.html

文字のプロパティはそれぞれ ''CharWeight'': 英数字のウェイト、''CharWeightAsian'': アジア系のウェイト、''CharWeightComplex'': 複合時のウェイトで設定します。




-- [[はにゃ?]] &new{2007-06-28 (木) 16:49:19};

#comment
*** 感想,コメント,メモ [#reed0e7b]
- はにゃさん、ありがとうございます!!早速試してみたら上手く行きました。最近OOoBASICをはじめて、良く分からない所が多いのでこれからも宜しくお願いします!ちなみに「oForms = oSheet.DrawPage.Forms()」から4行分の内容ですが、このフォームを「oForms」として宣言してあげる点を詳しく教えていただけますでしょうか?細かい質問ですいません。 -- [[岡龍]] &new{2007-06-28 (木) 23:59:43};
- 別に宣言しなくてもいいですね。同じオブジェクトを多様するときにはアクセスが早くなるようなので別に宣言することをお勧めしますが。マクロを書くときに別に変数を言するとデバッグやりやすいですけど。 -- [[はにゃ?]] &new{2007-06-29 (金) 19:13:26};
- なるほど、宣言とか変数を使用するのが大事なんですね。ありがとうございました。また何かありましたらお願いします。 -- [[岡龍]] &new{2007-07-04 (水) 23:34:14};

#comment

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes