「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:1
総数:3653
現在:3


フォームをクリックすると、セルの色を変えるマクロについて

ページOpenOffice.org FAQの登録ページ
投稿者ru
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-08-24 16:02:32 (火)
OSWindows
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

フォームのラジオボタンやチェックボックスをクリックすると、セルの色を変える方法があれば教えてください。 マクロでの設定であれば具体的にどのように設定すればよいのか教えていただけると助かります。


サンプルファイルの添付が望ましいです

M.Kamataki (2010-08-24 18:05:42 (火))

どのようなフォームの配置でしょうか。Calc上のセルとは値の入力などの関連はあるのでしょうか。このような具体的な情報があると良いと思います。そのためには、作りかけでよいのでCalcのサンプルファイルを用意していただくと、誤解なく回答ができると思います。ファイルの添付方法は、「当サイトの使い方/高度な使い方」をご覧ください。

なお、似たご質問として、faq/5/414「選択していないチェックボックスの色を変えたい」というものがありました。参考になるでしょうか。

マクロでの例

Kuma (2010-08-25 08:32:06 (水))

「フォーム上のラジオボタン」とは「シート上のラジオボタン」のことでしょうか?
もしもそうであるなら、下記の様にします。

(1)ツールボタンの「コントロール」をクリックして、シート(sheet1)上に2個のラジオボタンを作る。
(2)「コントロール」を「デザインモード」にする。
(3)作成したラジオボタン上でマウス右クリックして「コントロール」「全般タブ」で、ラジオボタンの「名前」欄は、2個とも同じ「ラジオボタン」にする。「タイトル」欄は別々の好きな名称にする。
(4)1個目のラジオボタンは、コントロールの「全般タブ」で「追加情報」欄を「1」に設定しておく。
(5)2個目のラジオボタンは、コントロールの「全般タブ」で「追加情報」欄を「2」に設定しておく
(6)下記のマクロを作成し、2個のラジオボタンの「イベント」「実行時」に登録する。

Sub option_click(oEvent)
   g_optionID =Cint(oEvent.Source.Model.Tag)
   oSheet1=ThisComponent.getSheets.getByName("sheet1")
   if g_optionID=1 then '<---ラジオボタンの追加情報で、どちらのラジオボタンかを判断。
      oSheet1.getCellRangeByName("A1").CellBackColor=RGB(0,0,0)
      msgbox "黒"
   elseif g_optionID=2 then '<---ラジオボタンの追加情報で、どちらのラジオボタンかを判断。
      oSheet1.getCellRangeByName("A1").CellBackColor=RGB(255,0,0)
      msgbox "赤"       
   end if
End Sub

(7)デザインモードを解除する。これで正規に使える。

マクロの設定方法について

ru (2010-08-26 11:08:31 (木))

すみません。Kumaさんの方法で設定してみたいのですが、マクロを設定したことも作ったこともないもので、どうやってマクロを作ったらよいのでしょうか?

マクロの具体的設定方法

Kuma (2010-08-26 19:38:07 (木))

(1)メニューバーの「ツール」「マクロ」「マクロの管理」「OpenOfficeorg Basic(B)」で「OpenOffice Basic マクロ」と言うダイアログが出る。
(2)「マクロの記録先」の下方に「OpenOffice.orgのマクロ 無題1」と言うのが有るからそれをマウスで左クリック。
(3)右側の方に「新規作成」が有るからそれをマウスでクリック。
(4)「新しいモジュール」と言うダイアログが出るから、「OK」をクリック。
(5)「無題1.Standard-OpenOffice.org Basic」と言うエディタウィンドウが出て、下記の文字が記載されている。

REM ***** BASIC *****

Sub Main

End Sub

このウィンドウ画面がマクロプログラムを書き込む場所。上記のコードを削除して
(6)私が教えたコードを全部コピーして、このエディタウィンドウ画面に貼り付ける。これでcalcは作成したマクロを記憶してくれる。
(7)calcのシート「sheet1」を表示して、メニューバーの「表示」「ツールバー」「フォームコントロール」をクリックすると、「フォームコントロール」ツールが出るから、これをつかってsheet1上に目的のラジオボタン(やチェックボックス)を作成する。
(8)作成したラジオボタン上でマウス右クリックすると「コントロール」の属性ダイアログが出る。
(9)「全般タブ」で、ラジオボタンの「名前」欄は、2個とも同じ「ラジオボタン」にする。「タイトル」欄は別々の好きな名称にする。
(10)1個目のラジオボタンは、「全般」タブの「追加情報」欄を「1」に設定しておく。
(10)2個目のラジオボタンは、「全般」タブの「追加情報」欄を「2」に設定しておく
(11)「イベント」タブの「実行時」の右方向に「…」が有るからクリックすると「アクションの割り当て」ダイアログが出る。
(12)一番上の「実行時」を選択して、右側の「マクロ」ボタンをクリックすると、記憶されているマクロの「option_click」が表示されるので、それを選択すると「割り当てられたアクション」欄にマクロ名称が設定される。これでラジオボタンにマクロが正式に登録される。
(13)「フォームコントロール」の「デザインモード オン/オフ」をクリックすると、デザインモードが解除される。
(14)ラジオボタンをクリックすると、ラジオボタンに登録されたマクロが走って「A1セル」が色塗られる。

以上。

なお、calcのマクロ言語は、「はにゃ?」さんの下記サイトが極めて丁寧に教えているので、読んで勉強すると良いです。
http://hermione.s41.xrea.com/pukiwiki/index.php?OOobbs

サンプルファイルです

M.Kamataki (2010-08-26 21:24:56 (木))

Kumaさんのマクロを利用して、サンプルファイルを作成してみました。ruさんは、OpenOffice.org 2.4をお使いのようなので、マクロ内のシート名を「表1」に変更しています。なお、2.4、3.2.1で動作することを確認しています。

filefaq5_480sample1.ods

マクロを利用されたことがないとすると、まずは「ツール」-「オプション」で「オプション」ダイアログを表示し、「OpenOffice.org」-「セキュリティ」を開いて「マクロのセキュリティ」ボタンをクリック。表示されたダイアログでセキュリティレベルを「中」にしておく必要があると思います。その後に上記のサンプルファイルを読み込んで、ラジオボタンを操作してください。

こういったサンプルファイルがあると、わかりやすいと思います。ruさん、動作を確認し、目的にあったものかどうか確認してください。ruさんもできれば、サンプルを用意していただきたいと思います。(マクロがわからなければ、サンプル内に動作してほしい手順などを書いてください)

なお、マクロに関しては、まずはヘルプを見るべきだと思います。OpenOffice.orgを起動したら、F1キーを押してヘルプを表示し、「目次」タブの「マクロとプログラミング」を表示してください。わたしはこのヘルプから勉強しました。

faq/5/474にも書きましたが、プログラミングに関する公式的な一次情報のページを紹介します。(英語ですが)

上記、BASIC Programmers Guideには、以下の日本語版があります。

マクロを使わない例

M.Kamataki (2010-08-26 21:50:24 (木))

セルの色を変えることは、faq/5/414「選択していないチェックボックスの色を変えたい」にも書かれているように、条件付き書式でも可能です。以下にサンプルを添付します。

filefaq5_480sample2.ods

イベント名

M.Kamataki (2010-08-27 15:01:44 (金))

Kumaさんが“(6)下記のマクロを作成し、2個のラジオボタンの「イベント」「実行時」に登録する。”と書かれている部分ですが、OpenOffice.org 2.4ではイベント名が「作動時」になっているので注意してください。翻訳が変更されています。

実行時のエラーについて

ru (2010-08-30 18:23:23 (月))

みなさん、いろいろとありがとうございます。マクロを設定するところまでたどりつけました。
ただ、実行してみると、BASICランタイムエラーがでてしまいました。
下記の通りです。
「例外が発生しました
Type:com.sun.star.comtainer.NoSuchElementException
Messeage:。」

ご教授お願い致します。

記述間違いでは

M.Kamataki (2010-08-30 21:45:44 (月))

>マクロを設定するところまでたどりつけました。

どのようなマクロを設定しましたか。エラーが表示されるのは、記述間違いかもしれません。何度か指摘しましたが、作成中のCalcファイルを公開しても問題のないものに作成しなおして、本ページに添付してください。

あるいは、以下の英語のフォーラムのように、設定したマクロのコードを提示してください。サンプルのコードで同じエラーが表示されていますよね。このフォーラムではサンプルが提示されているおかげで、記述間違いの指摘がされています。また、下記のようにまったく目的の異なるマクロでも同じエラーメッセージが表示されるわけですから、エラーメッセージの表示だけでは有効な回答は得られないと思います。(たぶんフォーム上の設定も絡むので、マクロコードの提示だけでなくCalcのサンプルファイル添付が望ましいですね)

[Solved]How do I access a table from a form?
http://www.oooforum.org/forum/viewtopic.phtml?t=73066

マクロの設定について

ru (2010-08-31 11:15:56 (火))

M.Kamatakiさんへ
マクロの設定は、Kumaさんに教えていただいた方法でしました。
−−−−−−−−−−−−−−−−−−−−−−−−
(5)「無題1.Standard-OpenOffice.org Basic」と言うエディタウィンドウが出て、下記の文字が記載されている。

REM ***** BASIC *****

Sub Main

End Sub

このウィンドウ画面がマクロプログラムを書き込む場所。上記のコードを削除して
(6)私が教えたコードを全部コピーして、このエディタウィンドウ画面に貼り付ける。これでcalcは作成したマクロを記憶してくれる。

−−−−−−−−−−−−−−−−−−−−−−−−

上記の設定をするときに、
REM ***** BASIC *****

Sub Main

End Sub
を全部削除して、
Kuma (2010-08-25 08:32:06 (水))
で教えて頂いたソースをごそっり貼り付けました。

やはり記述間違いですね

M.Kamataki (2010-08-31 12:08:05 (火))

わたしがコメント「サンプルファイルです」の冒頭で書いているように、翻訳の問題でOpenOffice.org 2.4のCalcのシート名は「表1」となっています。

Kumaさんのマクロは、3.x系向けなので、シート名を記述した3行目末の「("sheet1")」は、「("表1")」と書き直さないといけません。サンプル faq5_480sample1.ods のマクロの「表1」を「Sheet1」にしてみたら、ご提示されたエラーになりましたので、間違いないでしょう。あるいは、2.4のCalcのシート名の方を「表1」から「Sheet1」へ直しましょう。こちらのほうが簡単ですね。

NoSuchElementExceptionエラーは、このような記述間違いがあると表示されるようです。“ElementException(例外的な要素?)を見つけられない”というエラーで、そのElementExceptionが、今回は「Sheet1」ということだったと思います。

色がかわりません。

ru (2010-08-31 17:24:53 (火))

M.Kamatakiさんありがとうございます。
エラーはなくまりました。

ただ、ラジオボタンを選択しても、色が変更されません。

設定にミスはありませんか

M.Kamataki (2010-08-31 18:16:10 (火))

Kumaさんのコメント「マクロの具体的設定方法」の(7)までは正しく設定されているということでしょうか。

以後の手順を改めて確認し、ruさんの設定が手順と異なっていないかどうか確認してください。たぶんどこか、設定ミスをされているのだと思います。

ところでサンプルの filefaq5_480sample1.ods は、ruさんの環境で正しく動作しているでしょうか。faq5_480sample1.ods とご自分で設定されたCalcファイルを見比べても良いでしょうね。

確認しました。

ru (2010-08-31 20:06:06 (火))

ありがとうございます。
M.Kamatakiさんの作られたサンプルもご確認させて頂き、設定も再度確認し、正しく動くようになりました。

しかし、私の求めている動きではありませんでした。
Kumaさんに頂いたマクロだと、ラジオボタンを選択すると、別セルに色がつくといった感じですが、私が求めていたのは、ラジオボタンの名称の文字色や、背景に色がついてほしかったのですが。。。
難しいのですね。

サンプルを活用しましょう

M.Kamataki (2010-08-31 22:26:00 (火))

このような掲示板ではサンプルが役に立ちます。最初にサンプルの filefaq5_480sample1.ods をお試しになれば、「私の求めている動きではありません」ということはすぐにわかったと思います。サンプルを添付したのが、26日ですから5日ほど時間を無駄にしたことになりますね。また、ruさんはマクロに不慣れなための知識不足でエラーに遭遇したり、思ったように動作しないファイルを作成しましたよね。まぁ、このような失敗は今後の糧となるものなのですべて無駄とは言えませんが、最初にサンプルをお試しになっていればと思います。

ruさんもラジオボタンを設置したサンプルのCalcのファイルを用意した上で、説明を加えていただければ(より具体的にラジオボタンを置いたA1、A2のセルの色を変えたいなどの表現がベター)、誤解も少なかったのではないでしょうか。このような掲示板ではサンプルの使い方で適切な回答が期待できるようになります。今後の参考にしてください。

ラジオボックスを置いたセルに色をつける

M.Kamataki (2010-08-31 22:32:10 (火))

さて、新たなサンプルを用意しました。まず以下は、マクロを利用したものです。Kumaさんのマクロを少しだけ変更しています。

filefaq5_480sample3a.ods

また、以下は条件付き書式を利用したものです。

filefaq5_480sample3b.ods

ラジオボタンが排他的に選択できるためには、とりあえずセル上に値を入力するような設定が必要でした。両サンプルではH1セルに書き込んでいます。H1セルの文字の色を「白」にすると見た目的には表示されなくなります。

さて、ラジオボックスを置いたセルに色をつけるのは実現しました。このサンプルの動作はruさんの求めているものに近いでしょうか。

マクロを利用するためには、まだruさんは学ぶべきことが多いような気がします。「条件付き書式」の方がはるかに簡単です。

ラジオボタンそのものの色を変える

M.Kamataki (2010-08-31 23:29:47 (火))

faq/4b/1084「ユーザーフォームのボタンの色を動作時に変えたい」にコントロールそのものの背景色、文字の色を変更するサンプルが紹介されていました。このマクロもちょっと変更して、faq5_480sample3a.ods を変更したものが以下です。さて、どのようなサンプルが近いでしょうか。

filefaq5_480sample4.ods

要望は正確にお願いします。

Kuma (2010-09-01 05:57:39 (水))

ruさんの最初の要望は

フォームのラジオボタンやチェックボックスをクリックすると、セルの色を変える方法があれば教えてください。

でした。ruさん以外の方がそれを読んで

私が求めていたのは、ラジオボタンの名称の文字色や、背景に色がついてほしかったのですが。。。

を想像することは不可能ですよ。最初の時点で正確な記述をすることが必要です。

チェックボックスの場合

ru (2010-09-01 14:29:19 (水))

M.Kamatakiさんのサンプル「faq5_480sample3a.ods」ではラジオボタンを使用した場合ですが、チェックボックスを使用した場合はどのようなマクロになりますか?

Re: チェックボックスの場合

M.Kamataki (2010-09-01 18:11:14 (水))

わたしが最初に紹介したfaq/5/414「選択していないチェックボックスの色を変えたい」で提示されているマクロと当ページでKumaさんが作成されたマクロを組み合わせると実現できます。ヒントは、チェックボックの状態のチェックはfaq/5/414の、セルの色の設定はKumaさんのマクロを使います。

良い機会ですから、ruさんでサンプルのCalcファイルを作成してみてください。わたしの手元では実現出来ていますが、このようなものは習うより慣れろですからぜひ挑戦してみてください。出来上がったら、当ページに添付してください。

そうそう

M.Kamataki (2010-09-01 18:14:29 (水))

結局、どのサンプルがご質問の目的に近いのでしょうか。

チェックボックスのサンプル

Kuma (2010-09-02 10:02:27 (木))

ruさんへ。
「何々をこのようにしたい」とキチンと書いた方が目的達成が速くなりますよ。

今回はKamatakiさんの「faq5_480sample3a.ods」が目的の様?ですので、それにチェックボックスを追加したサンプル「faq5_480sample4a.ods」を作りました。
参考にどうぞ。

お名前:
題名:


添付ファイル: filefaq5_480sample4a.ods 592件 [詳細] filefaq5_480sample4.ods 1165件 [詳細] filefaq5_480sample3b.ods 1088件 [詳細] filefaq5_480sample3a.ods 1125件 [詳細] filefaq5_480sample2.ods 1192件 [詳細] filefaq5_480sample1.ods 1225件 [詳細]