KoMaDo   VISIO SQUARE : ShapeSheet  ■ Headline ■ HOME    

ShapeSheetトップへ ▼カッ飛び最後   全レスを表示

  四角形シェイプのサイズを一定以上大きくしたくない

01: 名前:ベジータ投稿日:2007/10/19(金) 20:08
はじめまして。

100mm X 50mm の四角形シェイプを小さくは出来るけど、大きくは出来ない
ようにしたいのですが、どのような式をどこに記述すれば
よいか教えてください。

Visioは 2002 以上がターゲットです。

02: 名前:yoda投稿日:2007/10/19(金) 20:52
shepesheetに、IF関数で書けないかと、思うのですが、
ちょっと、わかりません。だれか、頭のいい人にお任せします。
私が試したのは、VBAと組み合わせるので、ちょっとややこしいですが、
VBAで、サイズを制限するマクロドを書いておき、
ShepeSheetの、EventsセクションのEventXFModセルから、
CallThisK関数で、そのVBAマクロを起動する方法です。
VBAマクロは、簡単で、これだけです。
Sub LockMaxsize(shp As Visio.Shape)
If shp.Cells("Width") >= 30 / 25.4 Then
shp.Cells("Width") = 30 / 25.4
End If
If shp.Cells("Height") >= 10 / 25.4 Then
shp.Cells("Height") = 10 / 25.4
End If
End Sub
あとは、このマクロを、EventXFModセルから、きどうするように、
するだけです。ヘルプを確かめてくださいね。

03: 名前:visGeek投稿日:2007/10/19(金) 21:13
100*50以下にはできないということでしょうか?
いったん大きくしたらそれ以下にはできないということでしょうか?

04: 名前:visGeek投稿日:2007/10/19(金) 21:49
小さくではなく大きくしたくないのですね。
勘違いしました。
03の「以下」は「以上」に読み替えてください。

05: 名前:visGeek投稿日:2007/10/19(金) 21:51
シェイプシートだけで作るには、図形ハンドルを非表示にして
コントロールポイントを4隅などに追加し、コントロールポイントで
サイズを制御するように作るのがよいと思います。

06: 名前:yoda投稿日:2007/10/20(土) 23:36
ようやく、シェイプシートだけで、大きさを制限できました。
EventXFModセルに、以下のような式を入れれば良いようです。
IF(Width>=30 mm,SETF(GetRef(Width),30/25.4),FALSE)&IF(Height>=15 mm,SETF(GetRef(Height),15/25.4),FALSE)

07: 名前:visGeek投稿日:2007/10/21(日) 08:03
06の式では、図形ハンドルの操作で規定値以上に
大きくしようとすると、図形位置(PinX/PinY)が引きずられてしまうようですね。

規定値以上に大きくしようとした場合だけ、PinX/PinYを
元の値のまま保持させる、などということはできるのでしょうか?

08: 名前:yoda投稿日:2007/10/21(日) 08:09
引きずられてしまいます。

09: 名前:yoda投稿日:2007/10/21(日) 13:55
Bound関数というのが、あります。
たとえば、Widthセルに、
BOUND(43.6 mm,0,FALSE,20 mm,40 mm)
Heightセルに、
BOUND(19.4094 mm,0,FALSE,10 mm,20 mm)
と記入すると、幅を20mmから40mmの範囲に、
高さを10mmから20mmの範囲に制限できます。

10: 名前:yoda投稿日:2007/10/21(日) 13:57
これなら、引きずられません。

11: 名前:ベジータ投稿日:2007/10/22(月) 17:26
ベジータです。連絡が遅くなってスイマセン。
yodaさん、visGeekさん、ありがとうございました。
Bound関数を使用して思い描いていた図形を作ることが出来ました。

多謝

12: 名前:ベジータ投稿日:2007/10/22(月) 18:06
ベジータです。
Bound関数はVisio2003が初出のようです。

今回のターゲットは2002からなのです。非常にタイムリーな関数だった
のですが、残念です。
その他提示していただいたアイデアで考えてみます。


ShapeSheetトップへ ▲カッ飛び先頭   全レスを表示