• ベストアンサー

VBAの引数の指定 カッコとイコール

例えば Selection.Borders(xlbottom).LineStyle=xlDash のようなプログラムの場合、 Borderプロパティの引数にはカッコを使い、 LineStyleプロパティの引数にはイコールを使いますけど カッコを使う場合とイコールを使う場合は どうやって区別したらよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.2

こんにちは。 オブジェクトを取得するプロパティの場合()を付けて、その中にindexを指定する。 Workbooks(1) Worksheets("Sheet1") ActiveSheet.Shapes(1) ActiveCell.Offset(1,1) Range("A1").Borders(xlEdgeBottom) など 取得したオブジェクトのプロパティに値を設定したり取得する場合=を使って obj.Value=5 obj.Color=vbRed Range("A1").Borders(xlEdgeBottom).LineStyle=xlDash としたり、 x=obj.Value y=obj.Name z=Range("A1").Borders(xlEdgeBottom).LineStyle とする。 少し乱暴かもしれませんが、コレクションからメンバーを取得するプロパティにはカッコが付き、オブジェクトに値を設定するプロパティの場合イコールが付く。 のような感じで区別すれば良いような気がします。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

Borders は、セルの4つの辺(Border)のコレクション(配列のようなもの)です。 Borders(xlbottom) で下辺のBorder(オブジェクト)選んだことになります。 LineStyle は、Border オブジェクトのプロパティで、Border(罫線)のスタイルを決めます。 objBorder.LineStyle = xlDash は、そのスタイルの設定をしていることになります。 カッコを使う場合とは、コレクション(配列)になっているかメソッドになっている場合に使うということでイイと思います。 今選んでいる要素がコレクションなのかメソッドなのか単なるプロパティなのかは、その部分を選んでF1キーを押してヘルプを参照して調べます。

watermelon7
質問者

お礼

みなさんありがとうございます。おかげで理解できました。ところで、もう一つ質問なのですが、 specialcellsメソッドの引数はカッコでくくらないとダメですけど、 引数をカッコでくくらないとダメなメソッドと 引数をカッコでくくる必要の無いメソッドの区別はどうすればよいのでしょうか? 例えば Range("A1:E5").Specialcells(xlCellTypeBlanks).select というように引数をカッコでくくらないと動かないのです。 ところが ほかのメソッドは、引数をカッコでくくらないでも動きます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

小生勉強十分でなく、やや生半可ですが、 xlbottomはエクセルシステムで定められた定数(組み込み定数)で、具体的には、「数」(2進数?)が定められていて、Bordersというオブジェクトの種類を指定していると思います。全ての種類は組み込み定数が定められているようで、5百以上(は確実)もあるようです(?)。配列の要素の指定のような感じ。 =xlDashは、(xlDashは同じく組み込み定数の一種ですが)、値をプロパティに与えて、それによって形状や体裁描画等のプログラムが実行され、結果的に種類を決めて(選択して)います。 ーーー Sub test01() Cells(1, 1) = xlDash Cells(2, 1) = xlBottom End Sub を実行すると -4115 -4107 となりました。 参考までに Sub test01() Selection.Borders(-4107).LineStyle = -4115 End Sub でも同じになりました。

関連するQ&A