• ベストアンサー

エクセルの図形について

エクセルのシート上に円を描画してあります。この円を一旦消去した後にエクセルを終了させます。次にそのエクセルのファイルを開いた時に、先ほど消去した円と同一のものをシートの同じ位置に表示させたいのですが。どのような方法を用いればいいでしょうか? マクロの記録開始 → 円を描画 → マクロの記録終了 でマクロに登録すれば可能だと思いますが、既に円が描画されている状態でどうすればいいかが知りたいのですが。

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

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

苦肉の策。 Sheet1にボタンを2つ貼りつける。1つはCaptionを保存・消去、1つを円描画とする。 ボタン1とボタン2のクリックイベントとして下記を作る。 Private Sub CommandButton1_Click() ' MsgBox Worksheets("sheet1").Ovals(1).Name t = Worksheets("sheet1").Ovals(1).Top l = Worksheets("sheet1").Ovals(1).Left h = Worksheets("sheet1").Ovals(1).Height w = Worksheets("sheet1").Ovals(1).Width Worksheets("sheet2").Cells(1, 1) = t Worksheets("sheet2").Cells(2, 1) = l Worksheets("sheet2").Cells(3, 1) = h Worksheets("sheet2").Cells(4, 1) = w Worksheets("sheet1").Ovals(1).Delete End Sub Private Sub CommandButton2_Click() t = Worksheets("sheet2").Cells(1, 1) l = Worksheets("sheet2").Cells(2, 1) h = Worksheets("sheet2").Cells(3, 1) w = Worksheets("sheet2").Cells(4, 1) ActiveSheet.Shapes.AddShape(msoShapeOval, l, t, w, h).Select End Sub 円データ保存場所として、Sheet2を使っているが、 テキストファイルへ書き出しでも出来るでしょう。 またボタンのクリックイベントでなくて、BeforeSaveやOpenイベントで出来ると思う。 円はシートに1つしか書かれない仮定ですが、増えると 面倒です。その外にプロパティが設定してあれば、それの値等も一緒に保存しておいて、円の再描画の際に右辺に設定すれば良いと思いました。

hyacinth
質問者

お礼

ご丁寧にありがとうございました。 実行してみましたが、 Private Sub CommandButton1_Click() ' MsgBox Worksheets("sheet1").Ovals(1).Name t = Worksheets("sheet1").Ovals(1).Top       ↑   ここで、"実行時エラー1004 WorksheetクラスのOvalsプロパティを取得できません"   になってしまいました。

その他の回答 (1)

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

#1です。 (1)ボタンを2つ貼りつける。 (2)円をシート上に書く。(オートシェエイプから) (3)編集モードを解除する(三角定規と鉛筆のアイコンをクリック) (4)ボタン1->ボタン2の順序でボタンをクリックする。 この内(2)のステップを飛ばしていませんか。 回答からコピペしてやって見たら、私の場合は動きましたが。 その他コマンドボタンのプロパティのCommandButtonXのXとSub CommandButtonX_Click() のXと合わせてくださいね。普通最初なら1,2ですが消したりしていると3,4.・・と番号が進んでしまいますから。 

hyacinth
質問者

補足

ご指摘の箇所は十分注意してやってみましたが、やはりうまく行きませんでした。 (エラー箇所・内容は先ほどと同じです)

関連するQ&A