dポイントプレゼントキャンペーン実施中!

EXCELのワークシートに図形描画でボタンを書きます。
そのボタン上に文字を書きます。
このボタンにマクロの登録を行ないます。
その後、このボタンをクリックするたびに
ボタン上に描かれた文字列が書き換わるような
マクロを書きたいのですが、可能でしょうか?

A 回答 (3件)

こんばんは。



>マクロを書きたいのですが、可能でしょうか?

可能ですか?と聞かれれば、「可能です」と答えるしかありません。

失礼かもしれませんが、ずっと、ここで難しい質問が多いような気がします。図形描画でボタンを作るのは、やはりランクとしては難しいほうに入ります。それは、本などに載っていないからですが、VBEでは、図形描画は、インテリセンスが利かないということでもあるのです。

本来は、コントロールツールのボタンでもよいのではないでしょうか?それなら、VBAの標準の問題の中にあります。なるべく、自分で教本などを見ながらも解決できる範囲の中で、対処するほうがよいと思います。

ためしに作ってみました。

図形の場合は、以下のようになります。
図形を右クリックして、「マクロの登録」で以下の名前を探して選びます。
場所は、どこでもよいけれども、なるべく標準モジュールがよいかと思います。

なお、シート名、図形描画名は任意です。

Sub AutoShapeAlteredWords()
Static i As Integer
Dim MyWords As Variant

  Const MYWORD As String = "晴れ,曇り,雨,雷雨,晴れのち曇り,嵐"
  'コンマ(,)で区切ります。
  i = i + 1
  MyWords = Split(MYWORD, ",")
  Worksheets("Sheet1").Shapes("四角形 1").DrawingObject.Text = MyWords(i - 1)
  If i > UBound(MyWords) Then i = 0
End Sub

この回答への補足

うまく行きました。
「四角形」と「1」の間に半角スペースが必要だったのですね。
m(_ _)m

補足日時:2007/04/26 09:02
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
やってみたのですが、「指定した名前のアイテムが見つかりませんでした。」という
エラーメッセージが出てうまく行きませんでした。
ワークシート上には図形は押しボタン1つしか定義していないので、
名前は「四角形1」で間違いないと思うのですが、
正しく認識してくれなかったようです。

お礼日時:2007/04/26 08:54

#2です。


すきません。いくらやっても「大吉」が出ない欠陥おみくじだったようです。
やはり、「配列」で間違いました。
修正します。

Sub Omikuji()
Dim i As Integer
Dim MyWords As Variant
Randomize
Const MYWORD As String = "大吉,中吉,小吉,吉,半吉,末吉,末小吉,凶,小凶,半凶,末凶,大凶"
MyWords = Split(MYWORD, ",")
i = Int(Rnd() * (UBound(MyWords) + 1))
Worksheets("Sheet1").Shapes("四角形 1").DrawingObject.Text = MyWords(i)
End Sub
    • good
    • 0

murano47さん、Wendey02さん、おはようございます。



面白そうなので、Wendey02さんのコードをお借りして御神籤にしてみました。
(ただし、御神籤なので、乱数を発生させて占いを出してますので連続して同じのが出る場合もありますよ。)

Sub Omikuji()
Dim i As Integer
Dim MyWords As Variant
Randomize
Const MYWORD As String = "大吉,中吉,小吉,吉,半吉,末吉,末小吉,凶,小凶,半凶,末凶,大凶"
MyWords = Split(MYWORD, ",")
i = Int(Rnd() * UBound(MyWords) + 1)
Worksheets("Sheet1").Shapes("四角形 1").DrawingObject.Text = MyWords(i)
End Sub
    • good
    • 0

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