- ベストアンサー
エクセル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
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 「実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラーです」 ということですね。 今、XL2000, XL200両方試してみましたが、エラーは出ず、そのまま実行できます。また、OSもWin98で試してみたり、モジュールを変えてみたりしましたが、エラーが再現できません。何か、別の要因が働いているようです。 >数が多いので、出来ればループは避けたいのです。 ってありましたが、もしかして、実際は、もう描いたり・消したりを数多く繰り返していませんか? 新規のシートにすればできるものでも、あまり数多く、オートシェイプを入れだししていると、調子が悪くなることがあります。そうなると、そのままでは直しようがないような気がしますね。 With ActiveSheet.Lines '←ここまでは、確保できるのでしょうか? With .ShapeRange '←ここは?
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 With ActiveSheet.Lines ↓ With ActiveSheet.Lines.ShapeRange としたらいかがですか?
お礼
ありがとうございました。 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)
取り合えずループでどうでしょう。 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
お礼
ありがとうございます。 数が多いので、出来ればループは避けたいのです。
お礼
有難うございます。 今、自宅の2003で、あたらしいBOOKでやったらOKでした。 多分、他の原因だったのでしょうね。 うまく行きました。 いつもいつもお世話になります。