• ベストアンサー

エクセルVBAでLineの一括処理

ワークシート上に配置した複数のオートシェープの線(Lines)に対し、一括して太さと色を変えるにはどのようなコードになるのでしょうか? 勿論以下のTEST01のように名前で指定すれば可能なのですが、TEST02のような全てのLineということはできないのでしょうか? Sub Test01() With ActiveSheet.Shapes.Range(Array("Line 259", "Line 260")) .line.Weight = 1.75 .line.ForeColor.SchemeColor = 13 End With End Sub ↓実行時エラーとなる Sub Test02() With ActiveSheet.Lines .line.Weight = 2.5 .line.ForeColor.SchemeColor = 10 End With End Sub

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 「実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラーです」 ということですね。 今、XL2000, XL200両方試してみましたが、エラーは出ず、そのまま実行できます。また、OSもWin98で試してみたり、モジュールを変えてみたりしましたが、エラーが再現できません。何か、別の要因が働いているようです。 >数が多いので、出来ればループは避けたいのです。 ってありましたが、もしかして、実際は、もう描いたり・消したりを数多く繰り返していませんか? 新規のシートにすればできるものでも、あまり数多く、オートシェイプを入れだししていると、調子が悪くなることがあります。そうなると、そのままでは直しようがないような気がしますね。 With ActiveSheet.Lines '←ここまでは、確保できるのでしょうか?  With .ShapeRange '←ここは?

merlionXX
質問者

お礼

有難うございます。 今、自宅の2003で、あたらしいBOOKでやったらOKでした。 多分、他の原因だったのでしょうね。 うまく行きました。 いつもいつもお世話になります。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 With ActiveSheet.Lines    ↓ With ActiveSheet.Lines.ShapeRange としたらいかがですか?

merlionXX
質問者

お礼

ありがとうございました。 Sub Test04() With ActiveSheet.Lines.ShapeRange .line.Weight = 2.5 .line.ForeColor.SchemeColor = 10 End With End Sub としてみましたが、実行時エラーで 定義エラーとでました。 With ActiveSheet.Lines.ShapeRangeが反転します。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

取り合えずループでどうでしょう。 Sub Test03() Dim sh As Shape For Each sh In ActiveSheet.Shapes  If sh.Type = msoLine Then    sh.Line.Weight = 2.5    sh.Line.ForeColor.SchemeColor = 10 End If Next sh End Sub

merlionXX
質問者

お礼

ありがとうございます。 数が多いので、出来ればループは避けたいのです。