• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel マクロ 入力があったらボタンを出したい)

Excelマクロ 入力があったらボタンを表示する方法

このQ&Aのポイント
  • C3に入力があった場合、隣にボタンを表示させる方法を教えてください。
  • Excelマクロを使用して、C3に入力があった場合にボタンを表示させたいです。
  • 参考サイトのコードを使用して、C3の入力に応じてボタンの表示を制御する方法を教えてください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>C3に入力があった場合 そういうときはSelectionChangeイベントではなく,changeイベントを使います。 >C3に何か入力してEnter、又は他のセルをSelectした時のみボタンを表示させたい 裏を返せば,既にボタンがあるならば,何もしないでマクロを終了させてみます。 また今のご質問内容ではそこまで辿り着いていませんが,ボタンを消去する手順についても検討があってよいかもしれません。 手順: (簡易な例:シート上には今作ろうとしているボタンが1個あるか,または1個も無い) シート名タブを右クリックしてコードの表示を選ぶ とりあえずSelectionChangeイベントのコードは全部消す 代わりに次のように作成してみる Private Sub Worksheet_Change(ByVal Target As Range)  if activesheet.buttons.count = 0 then   If Target.Address = "$C$3" Then    If Not Range("C3") = "" Then    With ActiveSheet.Buttons.Add(Range("D2").Left + 1, Range("D2").Top + 1, _      Range("D2:D3").Width - 1, Range("D2:D3").Height - 1)     .name = "myButton1"     .OnAction = "あいうえお"     .Characters.Text = "あいうえお"     .Font.Size = 10    End With    End If   End If  end if end sub

cmd0
質問者

お礼

回答ありがとうございます! ボタンを消すのは他の場所で検討予定ですが、 まだそこまで作りこめていません。 しかし、説明不足だったにもかかわらず、 私の望みを汲み取ってくれてより良い物が出来ました! ありがとうございました!

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

イベントを間違えています。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) では、SelectionChangeイベントですから、C3をSelectする度に作動してしまいます。 Private Sub Worksheet_Change(ByVal Target As Range) と、Changeイベントにしましょう。 でも、こうしても、C3への入力の都度、ボタンができてしまいますよ。

cmd0
質問者

お礼

回答ありがとうございます! SelectionChangeが原因だったんですね。 盲点でした。 お蔭様で解決いたしました! ありがとうございました!