ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ありません。

このブログではサイドバーに広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLatexのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

LibreOffice Calcのダイアログ(ユーザーフォーム)のタブオーダー設定法

LibreOffice Calc 6.1では、スプレッドシート上とダイアログ上にコントロールまたはフォームコントロールを配置することができる。ダイアログというのはエクセルでいうところのユーザーフォームのこと。

操作中のコントロールはアクティブになる。コントロールがアクティブな状態にあることは、キーボードからの入力などの操作をそのコントロールが受け付ける状態になっていることを意味している。

キーボードのTabキーを用いてアクティブな状態にあるコントロールを遷移させることができる。遷移させていくときの順番はタブの順序またはタブオーダーと呼ばれている。

コントロールには「タブの順序」と名付けられた属性を持っているものがあり、この値である数値によってアクティブな状態のコントロールが遷移していく順番を決定することができる。

LibreOffice 6.1 Calcには、スプレッドシート上に配置するフォーム・コントロールのタブオーダーを一括で管理することができるダイアログ・ボックスが用意されている。各コントロールの属性一覧を表示するダイアログ・ボックスを開けば「タブの順序」という項目があり、その右端のボタンを押せばタブの順序を一括管理するダイアログ・ボックスが開く。

しかし、ダイアログ上に配置するコントロールに関してはこの機能がどうやらないようだ。そのため、タブの順序を設定するのに手間取ることがある。ダイアログ上に配置したコントロールの数が多くなるとやっかい。

ここではこの問題に対するちょっとした対処方法を書き留めておく。

シート上のコントロールとダイアログ上のコントロール

LibreOffice 6.1 Calcでは、スプレッドシート上のコントロールとダイアログ上のコントロールとでは、タブの順序を決める属性値の挙動が異なる。

スプレッドシート上のコントロールにおけるタブの順序を示す属性値では、コントロール間の同一値が受け入れられる。数値は0から始まるが、同じ番号が重複していても問題は起こらない。

例えば5つのコントロールがスプレッドシート上に配置されている場合、各々の属性値を0, 0, 1, 1, 2と設定することが可能。0, 0, 1, 1, 2という順番でアクティブなコントロールが遷移する。

しかし、ダイアログ上のコントロールの場合、コントロール間の同一値が受け入れられない。エラー・メッセージが表示されるわけでもなく、設定したはずの値が勝手に変更されてしまう。この挙動が使用者を手間取らせることがある。

この問題の対処方法

完全な解決方法とは言えないけれども、次のような対処方法がある。

  1. 「タブの順序」という属性を持つ全てのコントロールに対し、例えば100など、コントロール数よりも十分に大きい数値を一律に一つずつ入力していく。
  2. その後、「タブの順序」という属性を持つコントロールに0から順番に値を設定していく。

「タブの順序」の数値が0から始まることに拘れなければ、次のような方法もある。

  1. 「タブの順序」という属性を持つコントロールの中でタブを遷移させたい順番に、コントロールの数よりも充分に大きな数値、例えば100を一律に入力していく。
  2. これによって番号が自動的に割り振られていく。

これらの手順でうまくいくはず。100と入力しても属性値が勝手に変化してしまうが、気にしなくていい。ただし、コントロール数よりも十分に大きい数値でかつ同じ数値であることが重要。

LibreOfficeが今後バージョンアップを重ねていけば、ダイアログ上に配置するフォーム・コントロールにもタブオーダーを設定する専用のダイアログボックスが実装されるようになり、この不便さがいずれ解消されるようになるかもしれない。

コメント

このブログの人気の投稿

Visual Studio 2019にはC++のためのフォームデザイナーがない件

10の補数と9の補数と2の補数と1の補数

LibreOffice 6 Calcでフォーム(ダイアログ)を作成してマクロで表示