これ何て呼びますか Part2

フォームツールバーから作ったボタン(コントロールツールバーのコマンドボタンではない)の文字列を変えるマクロはどのように書けば良いでしょうか?
ActiveSheet.Shapes("古い名前").Caption = "新しい名前" など、いろいろやりましたがエラーになってしまいます。

A 回答 (3件)

エクセルのバージョンによるかもしれないのでよろしく。


下記は、参考にしてください。
VBなどと、またコントロールツールボックスのそれと、フォームのコントロールは不統一で難しいところと思う。
ーー
私はいつも確かめながら手探りで
Sub test02()
MsgBox Worksheets("Sheet3").Shapes(1).Name
End Sub
を実行する。Nameは強力で、エラーはまず出ない。
Button 1(半角スペースに半角1と思うが)が判る。
ーー
これを直接使わないで(半角やスペースの問題で)
n = Worksheets("Sheet3").Shapes(1).Name
のように文字列nに入れて
ーー
Sub test03()
n = Worksheets("Sheet3").Shapes(1).Name
Worksheets("Sheet3").Shapes(n).Select
MsgBox Selection.Caption
End Sub
を実行して、現在のCaptionが出ることを確かめかめて
(Captionも最近のVBなどで、Textなんかに変わったりしているので怖い)
ーー
Sub test04()
n = Worksheets("Sheet3").Shapes(1).Name
Worksheets("Sheet3").Shapes(n).Select
Selection.Caption = "実行ボタン"
End Sub
で実行ボタンに変わったことを確かめた。
ただマクロの記録と違ったカタチでできた。
ーー
色を設定(質問には無いが)
Sub test04()
n = Worksheets("Sheet3").Shapes(1).Name
Worksheets("Sheet3").Shapes(n).Select
Selection.Caption = "実行ボタン"
Selection.Font.ColorIndex = 5
End Sub
これもマクロの記録と違うができた。
エクセルのフォームのコントロールのプロパティは、手に負えない。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございました。マクロの記録などで確かめながらマクロを組んでいますが、同じように研究されている方が多いようで、安心しました。今回は、select selectionを省きたかったのですが、そうは行かなかったようです。

お礼日時:2007/10/19 20:21

新しいマクロの記録を用いて、シート上のボタンのテキストを変更すると下記のようなマクロが生成されます



Sub Macro2()
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = "ボタン 3"
End Sub

実際のシート上に何個のボタンがあって、どのようにされたいのか分かりませんが参考にはなると思います。

ボタンが複数あるなら例えば以下のようなマクロでもできます
Sub Macro3()
Dim idx As Integer
 For idx = 1 To ActiveSheet.Shapes.Count
  If Left(ActiveSheet.Shapes(idx).Name, 6) = "Button" Then
   ActiveSheet.Shapes(idx).Select
   Selection.Characters.Text = "Button " & idx
  End If
 Next
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございました。shapes()のインデックスが分からなかったのと、.Select Selection.を省きたかったのですが、そうは行かないようですね。

お礼日時:2007/10/19 20:24

マクロの記録で調べられると思います。



ActiveSheet.Shapes("Shapeの名前").Select
Selection.Characters.Text = "新しいテキスト"

↑文字だけ変えるならこんな感じ。
    • good
    • 1
この回答へのお礼

早速ありがとうございます。私もマクロの記録で作ってみましたが、
ActiveSheet.Shapes("Shapeの名前").Characters.Text = "新しいテキスト" というようにしたかったのですが、うまく行きませんでした。
選択した後で、選択を解除するしかないようですね。シートに保護をかけると、ボタンの選択もできなくなります。

お礼日時:2007/10/19 20:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A