前のトピック     次のトピック

第 4 章 VISIO の数式

セクション 2   Visio 数式の要素

シェイプの動作を制御する鍵は、必要な動作を定義する数式を作成することです。「数式」は、定数、関数、演算子、セルの参照を含めることのできる式です。Visio® は、数式を結果に対して評価し、結果を数式の入っているセルにあった単位に変換します(数式には定数が 1 つしかない場合もありますが、すべての数式に対してこの評価と変換プロセスが実行されます)。[表示] メニューから該当するコマンドを選択することによって、シェイプシート (ShapeSheet®) ウィンドウに、値あるいは数式としてセルの内容を表示することができます。


  オートメーションを使用して行う操作のほとんどは、数式を使用することによって実行できます。詳細については、「第 17 章 数式のオートメーション化」を参照してください。


このセクションの内容...

シェイプシート ウィンドウへの数式の入力と編集

数式の関数と演算子

シェイプシート セル参照

Visio 数式でのセル参照規則

Visio 数式での測定単位

シェイプシート ウィンドウでの数式の入力と編集

セルの数式を編集して、セルの値の計算方法を変更し、その結果、特定図形の動作を変更することができます。たとえば、[図形情報] セクションの [Height] セルには、図形の高さを編集することができる数式が入っています。表計算ソフトと同様のやり方で、シェイプシート ウィンドウに数式を入力、編集することができます。

Visio は、数値定数、文字列、またはセル参照であっても、セル内容を数式とみなします。ただし、表計算ソフトとは異なり、Visio のセルの多くは寸法などの特定種類の結果を必要とするので、セルに入力すると、インチやセンチメートルなどの測定単位を指示することになります。Visio エンジンは、数式の自然結果を、数式の入っているセルが必要とする種類の同等の結果に自動的に変換します。たとえば、[図形情報] セクションの [FlipX] セルでは、[FlipX] セルにブール演算結果 (TRUE または FALSE) が必要なので、正数を評価する数式は、「TRUE」に変換され、ゼロに評価される数式は「FALSE」に変換されます。詳細については、「Visio 数式の測定単位」を参照してください。

数式を入力するには、セルを選択し、次の図に示すようにセルあるいは数式バーに入力します。

 



シェイプシート ウィンドウでの数式の入力

  1. セルを選択し、数式を入力するか、編集して、Enter キーを押します。
  2. 数式の変更を取り消す場合は、[キャンセル] をクリックします。

数式の入力あるいは編集の詳細や数式バーでの作業方法については、Visio 製品付属のオンラインヘルプ「開発者用リファレンス」([ヘルプ]メニューから [開発者用リファレンス] を選択) で「数式」あるいは「数式バー」を検索してください。


ヒント  シェイプシート セルを右クリックし、ショートカット メニューを表示します。このメニューには、セルを編集する際に使用できるコマンドがあります。


TOP へ

Visio 数式の関数と演算子

表計算ソフトで数式を作成したことがあれば、Visio の数式で使用する関数や演算子がこれとよく似ていることに気付くでしょう。このトピックでは、関数と演算子についてとそれらの使用方法を簡単に説明します。

関数

関数は、1 つの定義済みのタスクを実行します。ほとんどの関数は一定数の引数を入力として使用しますが、引数を使わない関数もあります。また、可変数の引数を使用したり、オプションとして引数を使用する関数もあります。引数の種類と数は関数によって異なりますが、すべての関数は同じ一般構文を使用します。

Visio 数式で使用できる関数の多くは、表計算ソフトの数式に似ています。それらは、SUM や SQRT などの数学的な数式、SIN や COS などの三角関数、あるいは IF や NOT などの論理式です。GUARD、GRAVITY、RUNADDON などの Visio のみで使用する関数も多くあります。

関数の詳細については、Visio 製品付属のオンラインヘルプ 「開発者用リファレンス」([ヘルプ] メニューから [開発者用リファレンス] を選択) を参照してください。


  特定の関数は Visio で生成された数式に表示されますが、[関数の挿入] ダイアログ ボックスには表示されず、オンラインヘルプ「開発者用リファレンス」にも説明がありません。これらの関数は、アンダースコアから始まります。(例 _ELLIPSE_THETA)これらは内部的な使用に備えて予約されており、他の数式では使用されません。


演算子

演算子は、通常 2 つのオペランドを組合せて結果を計算する、演算を実行します。

演算子は、算術演算子 (加算、減算、乗算など)、あるいは論理演算子 (より大、より小、等しい) に分類されます。ただし、連結だけは、2 つの文字列を 1 つの文字列に結合します。

オペランドは定数 (1 つの値) または式 (おそらく 1 つ以上の関数を含む) にすることができます。表計算プログラムと同様、 Visio の数式では、オペランドをセル参照にすることができます。

数式に複数の演算子がある場合、演算子は一定の順序 (優先順序と呼ばれることもあります) で評価されます。たとえば、乗算演算子の ( * ) は、加算演算子 ( + ) の前に評価されます。次の式を考えてみてください。

4 + 5 * 6

乗算は加算よりも優先順位が高いので、まず「5 * 6 」が先に計算され、「30」となり、次に「4」が加算されて、結果は「34」となります。

括弧内の式をグループ化することによって評価順序を変更できます。例を次に示します。

( 4 + 5 ) * 6

「4 + 5」は括弧で囲まれているので、まず先に計算されて「9」になります。次に「9 * 6 」の乗算が行われ、結果は「54」となります。

括弧内の式はネストされているので、最も内側にある括弧内の式から計算され、順に外側へと計算してゆきます。

Visio 数式の演算子と優先順位の表が必要な場合は、Visio 製品付属のオンラインヘルプ「開発者用リファレンス」の「評価の順序」を検索してください。

TOP へ

シェイプシート セルの参照

セルの参照を用いると、Visio 数式間の相互依存関係を作成できます。セルの参照により、別のセルの値に基づいて 1 つのセルの値を計算することができます。たとえば、ユーザーが幅に合わせて縦方向に図形を引き伸ばせるように、図形の [Width] セルには、[Height] セルの値を参照することによって、図形の幅を計算する数式がある場合があります。

数式は、図面ファイル内のあらゆるセルを参照できますが、同じぺージのセル、たとえば、同じ図形や、同じグループの別の図形などを参照する方が一般的で便利です。


  海外を対象としたソリューションをローカライズする予定の場合は、数式にユニバーサル名を使用するのが得策です。Visio 2000 では、名前を付けることができるオブジェクトすべてに名前が付けられます。たとえば、[ユーザー定義セル] セクションの図形や要素には、実際にはローカル名とユニバーサル名が付けられます。ローカル名はユーザーに表示されます。これは、ソリューションをローカライズする際に翻訳する必要があります。ユニバーサル名は (その大部分が) ユーザーには表示されず、そのため、翻訳する必要はなく、オートメーションでのみ使用することができます。

ユニバーサル名はシェイプシート ウィンドウの数式に入力したり、オートメーションで設定することができますが、数式を入力すると、この数式は シェイプシート ウィンドウにローカル名で表示されます。ユニバーサル名をソリューションで使用する方法の詳細については、「第 25 章 Visio オートメーション ソリューションのパッケージ」と Visio 製品付属のオンラインヘルプ「開発者用リファレンス」を参照してください。


同一シェイプのセルの参照

同じ図形のセルへの参照では、たとえば、[Height] などの 1 つのセル名だけを指定する必要があります。セルがインデックスのついた行のあるセクションにある場合、このセクションと行インデックスはセル名の一部となります。たとえば、次の参照では、[接続ポイント] セクションの X 列、第 5 行のセルを指定します。

Connections.X5


ヒント  同じ図形の別のセルを手早く参照するには、挿入ポイントを数式バーに置いて、目的のセルをクリックします。すると、挿入ポイントにセル名が挿入されます。


他のシェイプまたはコンテナのセルの参照

1 つのシェイプから別のシェイプ、ぺージ、マスタシェイプ、図面、またはスタイルのセルを参照するには、そのセルのコンテナを識別する接頭語が必要です。たとえば、別のシェイプのセルへの参照は、次の参照で示すように、シェイプ名あるいは ID、感嘆符ポイント、そしてセル名が続けて含まれている必要があります。

Armchair!Width

この参照は、「Armchair」という名前のシェイプの [図形情報] セクションにある [Width] セルを指定します。

シェイプに名前がない場合、または名前の代わりに、シェイプ ID を参照することができます。たとえば、次の参照では、ID が 2 のシェイプの[Width] セルを指定します。名前は、コンテナにより「範囲を決定」 されます (たとえば、2 つのグループはそれぞれ同じ名前の図形を含めることができます) が、Sheet_ID は常に一意なので、こちらを推奨します。例:

Sheet.2!Width


ヒント  記述的な名前があるかどうかにかかわらず、図面ぺージのオブジェクトには、必ず ID があります。オブジェクトが作成される際に ID が割り当てられます。この ID は、別のぺージあるいは図面にオブジェクトを移動しない限り変更されません。オブジェクトの ID を表示したり、記述的な名前を付けるには、[書式] メニューから [オブジェクト情報] を選択します。


図面ぺージのセルへの参照には、[ThePage] という名前、次に感嘆符、最後にセル名が必要です (マスタシェイプでは、[ThePage] への参照は、全体のサイズや図面の縮尺などの、マスタシェイプ全体のプロパティを定義するオブジェクトを参照します)。たとえば、次の参照では、図面ぺージの [PageScale] セルを指定します。

ThePage!PageScale

TOP へ

数式でのセル参照規則

次の表は数式でセルを参照する際の規則をまとめたものです。

セル参照構文のまとめ

セル セル参照構文
同一オブジェクト内 Cellname Width
図形座標 セクション内 Geometryn.ColumnnameRowIndex Geometry1.X1
同一コンテナ内の別名オブジェクト内 Shapename!Cellname Star!Angle
同一コンテナ内の同名の別オブジェクト内 Shapename.ID!Cellname Executive.2!Height
同一ぺージの任意のオブジェクト内 Sheet.ID!Cellname Sheet.8!FillForegnd
インデックス付き行の名前付き列内 Sectionname.Columnname[RowIndex] Char.Font[3]
インデックス付き行の名前なし列内 Sectionname.ColumnnameRowIndex Scratch.A5
名前付き行内 Sectionname.Rowname User.Vanishing_Point
同一ぺージシート内 ThePage!Cellreference ThePage!PageWidth
図面の別ぺージのぺージシートのセル Pages[Pagename]!Cellreference Pages[Page-3]!DrawingScale
マスタシート内 Masters[Mastername]!Cellreference Masters[Door]!Sheet.5.Width
スタイルシート内 Styles!Stylename!Cellreference Styles!Connector!LineColor
図面シート内 TheDoc!Cellreference TheDoc!OutputFormat

TOP へ

Visio 数式の測定単位

アプリケーションは、数式が入力されたセルによって、数式の結果をさまざまに評価します。

最適な結果を得るためには、Visio で指定される単位を使用するのではなく、開発者が数式の測定単位を指定してください。数値に対して測定単位を指定しない場合は、そのセルに対して定義されている内部単位を使用して評価され、それは、ぺージ単位、図面単位、または角度単位になります。

内部単位としては、距離測定にはインチ、角度測定にはラジアン、時間測定には日数が使用されます。

2 次元、または 3 次元の単位

寸法単位を乗算したり、除算する Visio 数式では、計算される結果は、複数セルに保存される 2 次元または 3 次元の単位になります。たとえば、図形が図面単位で幅が 5 メートル、高さが 10 メートルの場合、数式「= Width * Height 」は「50 m ^2 」 (50 平方メートル) と計算します。2 次元または 3 次元の結果を保存するセルは次のとおりです。

FORMAT 関数を使用して、「sq m」などの省略形で 2 次元または 3 次元の単位を表示します。詳細については、Visio 製品付属のオンラインヘルプ 「開発者用リファレンス」を参照してください。

大半の乗算は、単位を持つ値と単位のない値を組み合せるためのものだという点に注意してください。このような計算で、ともに単位を持つ 2 つの値を乗算すると、2 次元または 3 次元の結果は無意味なものになる場合があります。たとえば、[FillForegnd] などのカラーセルが、2 つの [図形座標] セルの積に設定されていると、[図形座標] セルは必ず単位があり、[FillForegnd] セルは 2 次元または 3 次元の値を持つことがないので、結果は #DIM エラーとなります。


  Visio 2000 より前のバージョンの Visio 製品では、次元値を乗算あるいは除算する数式では、正確な計算結果が出ない場合があります。たとえば、数式「=1cm. * 1cm.」は、「0.394in. * 0.394in.」に変換されます。単位を計算せず、定数だけを乗算すると、この数式の結果は「0.155 in.」となります。この結果に「2.54cm./in.」を掛け合わせてセンチメートルに計算しなおすと、正しい結果である、「1cm.^2」 (平方センチメートル) ではなく、「0.394cm.」になってしまいます。このような動作に対応している既存ソリューションは、Visio 2000 の 2 次元、または 3 次元の単位を利用するよう変更する必要があります。


測定単位の指定

図面の多くは、物理的なオブジェクトを表すので、測定単位を英語とメートル法で指定でき、角度はラジアン、10 進数の度数または度、分、秒で指定することができます。パイカ、ポイント、シセロ、ディドーなどの標準印刷測定値を使用することもできます。

思い通りの結果を得るには、次元値を期待するセルに数式を入力する際に、必ず、次の表の例に示すように、測定単位を指定してください。

数と単位の対の例

使用例 使用禁止例
5 in. 5
Width + 0.5 in. Width + 0.5
7 in. * 1.5 7 * 1.5
DEG(MODULUS(Angle, 360 deg.)) MODULUS(Angle, 360 deg.)

単位を明示的に指定すると、計算で数と単位の対の特定が容易になり、数と単位の対を別の数と単位の対で誤って除算したり、角度と長さを加算するような、非互換単位を組合せたりすることがなくなります。さらに、測定単位を指定しておくと、世界規模での数式のローカライズが可能になります。

Visio 数式の測定単位については、Visio 製品付属のオンラインヘルプ 「開発者用リファレンス」([ヘルプ] メニューから [開発者用リファレンス] を選択) を参照してください。

Top