• ベストアンサー

(Excel 2003) マクロでワークシート上のラベルをコントロールしたいのですか・・・

こんにちは。 Excel 2003 で思い通りのグラフが作成できなくて、ならば自分で作ろうと無謀にも思い立ち、 マクロでラベルをワークシートに貼り付けてみました。 (とりあえずの目標) ・目的の位置に目的の大きさで貼り付ける。 ・標題を消去する。(あるいは、特定の文字を設定。) ・境界線を設定する。 ・背景色を設定する。 しかし、思った通りに動作してくれません。下記はそのテスト用のコードです。 Sub Test1() With Sheets("テスト").OLEObjects.Add(ClassType:="Forms.Label.1", _ Left:=54, Top:=13.5, Width:=54, Height:=13.5) '.Caption = "" 実行時エラー '.BorderStyle = fmBorderStyleSingle 実行時エラー '.BackColor = RGB(192, 192, 192) 実行時エラー .Border.Color = vbBlack 'OK .Interior.Color = RGB(192, 192, 192) 'NG(実行時エラーはないが効果無し) End With End Sub (質問1) プロパティウインドウでは指定可能なのに、VBAでプロパティを利用できないのは何故ですか? Caption, BorderStyle, BackColor など 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」 (質問2) 標題を消去する(または、特定の文字を指定する)にはどうしたらよいですか? また、背景色を設定するにはどうしたらよいですか? 初歩的なことと思いますが、よろしくお願いします。

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

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

こんばんは。 >(質問1)VBAでプロパティを利用できないのは何故ですか? プロパティが、上位と下位のものが混じっているからですね。以下のようにすれば通るはずです。 Sub LabellingTest1()  With Sheets("テスト").OLEObjects.Add(ClassType:="Forms.Label.1", _    Left:=54, Top:=13.5, Width:=54, Height:=13.5)    .Object.Caption = ""    .Object.BorderStyle = fmBorderStyleSingle    .Object.BackColor = RGB(192, 192, 192)    .Border.Color = vbBlack    .Interior.Color = RGB(192, 192, 192)   End With End Sub 今、試してみましたが、これをすると、ワークシートからプロパティの変更できなくなるようです。もちろん、オブジェクトとして、何も変りはないようですが。 >(質問2)標題を消去する 標題とは、英語で、Caption ですが、ラベルのCaption のことですか? Sheets("テスト").OLEObjects(1).Object.Caption = "" 背景色を設定する これは、同じことですからお分りになるかと思います。 シート上のコントロールツールが多数ある場合は、 「特定の文字を指定する」ということは、私は、For Each ~ In でループで探していくしかないのではないかと思います。

GreatDragon
質問者

お礼

早速の回答ありがとうございます。 .Object が無かったのが原因です。 ユーザーフォームと同じように考えたらダメなんですね。 お世話になりました。 ※実は投稿直後に自己解決していまして、「運営スタッフ」に削除依頼をしてしまいました。  もしこの投稿が削除されましたら申し訳ありません。

その他の回答 (1)

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

回答になるかわかりませんが・・・・ 指定のOLEObjectsはエクセルと相性が悪いのではないでしょうか エクセルのフォーム機能を使ったラベルでは以下の記述になります Worksheets("テスト").Labels.Add(54, 13.5, 54, 13.5).Select Selection.Characters.Text = "" ただ、このラベルは境界線や背景色を指定できません 必要であれば、フォームのラベルではなく、オートシェイプの方がよいかと思います ただ、上記の内容はあくまで私が調べた結果ですので他に良い方法があるかもしれません。

GreatDragon
質問者

お礼

ご回答ありがとうございます。 そのような指定方法もあるのですね。 参考になりました。 ※実は投稿直後に自己解決していまして、「運営スタッフ」に削除依頼をしてしまいました。  もしこの投稿が削除されましたら申し訳ありません。

関連するQ&A

専門家に質問してみよう