ミニスクリプト集MENUへ戻る

名称 ・・・・・・・

複数選択形状のハンドル取得

ルーチン名 ・・・・・・・

GetHandlesAndNumber

スクリプトNo ・・・・・・・ sub- 003
file名 ・・・・・・・ script003.vbs(右クリックのコンテクストメニューでダウンロードできます。(windowsのみ)
修正(2003/05/26)UTF-8からANSIに統一。
概略 ・・・・・・・

複数選択形状のハンドルを取得し形状数とハンドル(配列)を引数で返す。

使用前提 ・・・・・・・

形状が一つ以上選択されていること。
親のスクリプト(またはサブルーチン)で受け取り変数を宣言しておく
その際、ShapeHandlesは通常のバリアント変数で(配列ではなく)宣言しておく。

依存関係 ・・・・・・・

特に無し

引数説明 ・・・・・・・

ShapeHandles:ハンドルの受け取り用変数(バリアント) 取り出した配列を丸ごと保存する。
NoOfShape:取得したハンドルの数の受け取り用変数。ハンドルがバリアントで戻るので取り出し用に必要となる。

戻り値説明 ・・・・・・・

形状が選択されていればtrueを、一つも選択されていなければfalseを返す。

変数説明 ・・・・・・・

RemShape:形状を保管する配列。形状数が10以上ならredimで配列数が再確保される。

注意点 ・・・・・・・

ハンドルデータを使用するときはNoOfShapeを利用すること。UboundでもOK
(配列を含んだ)バリアントも使用例のように添え字で扱うことができます。

 
スクリプト
Function GetHandlesAndNumber(ShapeHandles,NoOfShape)
  Dim remShape(),i           '誤りがあったので修正(2003/05/26)
     redim remShape(10)    '同上    
    RemShape(0)=XShade.FirstHandle()
    if remShape(0)<>0 then
      i=0
      do
        i=i+1
        if i>9 then reDim Preserve remShape(i+1)
          remShape(i)=XShade.NextHandle()
      Loop While remShape(i)<>0
    else 
      GetHandlesAndNumber=false:Exit Function
    end if
    NoOfShape=i
    ShapeHandles=remShape
    GetHandlesAndNumber=true
End Function
使用例
call mainSub()
sub mainSub()
  dim ShapeHandles,NoOfShape     'ShapeHandlesが配列で宣言されていないことに注目してください。
  if GetHandlesAndNumber(ShapeHandles,NoOfShape) then
    for i=0 to NoOfShape-1
      XShade.message ShapeHandles(i)
    next
  else
    XShade.message("形状が選択されていません")
  end if
end sub

ミニスクリプト集MENUへ戻る