こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAの記述方法の質問です。

エクセルです。12個のセルの文字列をオートシェープの吹き出しに順に表示させるマクロをつくりました。

Sub tenki2()
Dim i As Integer
Dim a As String
For i = 1 To 12
a = Cells(i, 2).Value

ActiveSheet.Shapes("AutoShape 4").Select
Selection.Characters.Text = a

Application.Wait Now + TimeValue("00:00:05")
Next i

End Sub

これで思った通り表示されるのですが、できればオートシェープをセレクトしないようにしたいのです。
(シートを保護するため)
それで

ActiveSheet.Shapes("AutoShape 4").Select
Selection.Characters.Text = a

のところを

ActiveSheet.Shapes("AutoShape 4").Characters.Text = a

と変えたのですが、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」という実行時エラーがでてしまいました。書き方のどこがまずかったのでしょうか?ご教示いただければ幸いです。

投稿日時 - 2003-05-20 11:28:25

QNo.552588

困ってます

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

> ActiveSheet.Shapes("AutoShape 4").Characters.Text = a
> と書くと保護の有無にかかわらず実行時エラーなのです。

ActiveSheet.Shapes("AutoShape 4").TextFrame.Characters.Text = a

投稿日時 - 2003-05-20 12:33:27

お礼

ありがとうございました!
うまく行きました。
マクロの自動記録では絶対わからない書き方ですね。
助かりました。

投稿日時 - 2003-05-20 12:54:42

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

シートを保護させたから エラーになったんでしょう。

保護したまま、VBAのほうで、解除して、再度
保護するようにしてみれば?

'保護の解除
ActiveSheet.Unprotect

ActiveSheet.Shapes("AutoShape 4").Select
Selection.Characters.Text = a

'シートの保護
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

投稿日時 - 2003-05-20 11:33:57

補足

> シートを保護させたから エラーになったんでしょう。

ActiveSheet.Shapes("AutoShape 4").Select と書けば保護時にはエラーになるし、解除すればもちろん大丈夫です。それはわかるのです。
ActiveSheet.Shapes("AutoShape 4").Characters.Text = a
と書くと保護の有無にかかわらず実行時エラーなのです。
だから、この書き方のどこがまずいのか知りたいのです。
よろしくお願いします。

投稿日時 - 2003-05-20 11:39:48

あなたにオススメの質問