[[20060730160054]] 『ユーザーフォームのコマンドボタンをクリックした』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームのコマンドボタンをクリックしたら、ボタン自体の色を変えるかボタンを押したままの状態にし、どのボタンを押したか後でも分かる状態にしたいのですが教えていただけますか??』(初心者)

 全てのコマンドボタンに↓のように記述、かな?

 Private Sub CommandButton1_Click()
  Me.CommandButton1.BackColor = vbRed
 End Sub

 なお、ブックを閉じたら情報を保持しません。
 再起動後も保持したいなら、状態をセルなどに
 記憶させておく必要があります。

 高等な技を使えば、呼び出したコマンドボタンを
 取得してそのコマンドボタンの色を変える、とい
 うのも可能らしいのですが、残念ながら分かりま
 せん。
 この場合はコードは一つですむと思います。

 フォームのボタンなどでしたら、
 Application.Caller
 が使えます。
 (MARBIN)

 あっと。
 >フォームのボタン
 表示→ツールバー→フォーム
 のことですね。
 (MARBIN)

MARBINさんありがとうございました。m(__)m 
もう一度クリックしたら元の色に戻せるようにしたいのですが・・・。
教えていただけますか?  よろしくお願いします。

 元の色ではなく、白と赤を切り替える、ですが、こんな
 かんじになります。
 Private Sub CommandButton1_Click()
  With Me.CommandButton1
   If .BackColor = vbRed Then
      .BackColor = RGB(255, 255, 255) '白
   Else
      .BackColor = vbRed
   End If
  End With
 End Sub
 (MARBIN)

 こういう方法はどうでっか?

 最初にそのコマンドボタンの色を取得しときます。(それぞれのボタンにそれぞれ
 色づけしてあるばやい)
      (弥太郎)
 Option Base 1とDim colNo...はGeneral Declarationsにコピペします。
 要するにそのフォームモジュールのいっちゃん上にという事ですワ。
 ただそのボタンが色づけされてない場合は(作成時に)もっと簡単なコードになりま
 っせぇ。
 '---------------------------
 Option Base 1
 Dim colNo() As Variant

 Private Sub UserForm_Initialize()
    Dim cntrol As Control
    For Each cntrol In Controls
        If Left(cntrol.Name, 4) = "Comm" Then
            i = i + 1
            ReDim Preserve colNo(i)
            colNo(i) = Controls("CommandButton" & i).BackColor
        End If
    Next
 End Sub
 Private Sub CommandButton1_Click()
    With Me.CommandButton1
        .BackColor = IIf(.BackColor = colNo(1), 16711680, colNo(1))
    End With

 End Sub
 Private Sub CommandButton2_Click()
    With Me.CommandButton2
        .BackColor = IIf(.BackColor = colNo(2), 16711935, colNo(2))
    End With

 End Sub
 Private Sub CommandButton3_Click()
    With Me.CommandButton3
        .BackColor = IIf(.BackColor = colNo(3), 255, colNo(3))
    End With
 End Sub


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.