コマンドボタンの文字を名前・出席・欠席と繰り返し変更する方法

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

名前が表示させているコマンドボタンを1回押すと「出席」、もう1回押すと「欠席」、さらに1回押すと再び名前表示するようにコマンドボタンのキャプションを変更させたいと思ったことありませんか?

この場合、IFステートメントを3回繰り返して使用することで簡単にできるのでVBAコードをご紹介します。

クリック毎に表示名を変更する

コマンドボタンのキャプションが、もし「名前」だったらキャプションを「出席」に、そうではなく「出席」だったらキャプションを「欠席」に、さらに「欠席」だったら「名前」にするという文章になります。

これをそのままVBAコードで書くだけですが、コマンドボタンのプロパティ内のCapition名も最初に表示したい名前にする必要があります。

ここでは「とりっぷぼうる」とします。

キャプション名を直接記載する方法

コマンドボタンのキャプション名をVBAコード内に””で挟んで直接記載する方法です。

VBAコード

Private Sub CommandButton1_Click()
If CommandButton1.Caption = “とりっぷぼうる” Then
CommandButton1.Caption = “出席”
ElseIf CommandButton1.Caption = “出席” Then
CommandButton1.Caption = “欠席”
ElseIf CommandButton1.Caption = “欠席” Then
CommandButton1.Caption = “とりっぷぼうる”
End If
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. もしコマンドボタン1のキャプションが「とりっぷぼうる」だったら
  3. キャプション名を「出席」にする
  4. そうではなく「出席」だったら
  5. キャプション名を「欠席」にする
  6. そうではなく「欠席」だったら
  7. キャプション名を「とりっぷぼうる」にする
  8. IFステートメント終了
  9. マクロ記録終了

これで、コマンドボタンをクリックするたびにキャプション名が順番に表示されます。

波乗りアヒル

これで問題なく動作するのですが、メンバーが10人いたらコマンドボタンの数も10個必要なので、名前を10個用意して1個1個書くのも大変です。
さらにメンバーが変わるとVBAコードも書き直しもまた面倒なので、セルにリンクさせる方法をおススメします。

キャプション名をセルとリンクさせる方法

ここでは仮に10個のコマンドボタンが必要でも「出席」「欠席」は共通で、メンバーが変わる可能性があるという前提で、メンバーをセルの値にリンクさせます。

これにより、コマンドボタンのプロパティを最初に設定も不要になり、メンバー表のリストが変わると自動的に「メンバー名」キャプションが変更されるようにしますので、実用的ですよ。

メインバーの名前はセルA1に記載されているメンバーの名前を「とりっぷぼうる」の代わりに設定します。

VBAコード

Private Sub CommandButton1_Click()
If CommandButton1.Caption = Range(“A1”).Value Then
CommandButton1.Caption = “出席”
ElseIf CommandButton1.Caption = “出席” Then
CommandButton1.Caption = “欠席”
ElseIf CommandButton1.Caption = “欠席” Then
CommandButton1.Caption = Range(“A1”).Value
End If
End Sub

”とりっぷぼうる”と記載していたVBAコードの部分が、セル1A1を指定するように書き換えただけです。

もちろんシート名を指定していないので、セルA1に名前が書いてあるシート上でユーザーフォームが開くことを前提にしています。

波乗りアヒル

応用として、Captionの次の行に文字色や背景色を指定するVBAコードを書き足せば、文字と同時に色も変更できますよ。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

よかったらシェアしてね!
  • URLをコピーしました!