- ベストアンサー
エクセルで…
すみません、くだらない質問なんですけど。 エクセルで質問です。 あるセルのうえで、マウスの左ボタンを1回クリックすると塗りつぶす。続けてもう一度クリックすると×を表示、もう一回クリックすると空に戻る。 なんてことは可能ですか? 初心者の私には想像もつきません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。Wendy02です。 (1)の場合は、ワークシートの下部にあるタブを右クリックで、コードの表示 そのまま「Dim myCount As Integer」の文字から貼り付けます。 (2)の場合は、コントロールツール(メニューの表示-ツールバー) で、Aをクリック-ワークシートで、+にカーソルが変るはずですから、それで長方形を作ります。 貼り付けたら、右クリック-コードの表示 Private Sub Label1_Click() End Sub と出てきますから、先頭から Private Sub Label1_Click() Static CountClick As Integer | End Sub までを上書きします。 どちらがよいかは、ご自身で試しながらお決め下さい。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
シートのイベントに 右クリックのイベントはあります。 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) End Sub しかし左マウスクリックは無いようです。(E2002の場合) 右クリックも本来の効果(ドロップダウンが出てしまう)に邪魔されます。 ダブルクリックもシートのイベントにあるが、こちらも編集状態になって邪魔されます。 シートのセル選択変化イベント Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub で代用せざるを得ませんが、#2のご指摘の通りです。 ダブルクリックでやってみました。 一旦指定セルをはずして、元のセルをダブルクリックせねばならない 欠点があります。 Public x Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Select Case x Case 0 Target.Interior.ColorIndex = 6: x = 1 Case 1 Target.Interior.ColorIndex = 0 Target = "x": x = 2 Case 2 Target = "": x = 0 End Select End Sub 上記は欠点のご指摘があるかもしれません。
お礼
ご丁寧にありがとうございます。 私は超初心者で、VBAが全くわかりません。 そこから勉強してみることにしますね。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 もしかしたら、Excelの外のマウス自体を制御する方法で、カウントを取る方法があるかもしれませんが、今の私にはわかりません。ExcelのVBA自体では、セルを使って、そのような続けてカウントの仕方は出来ないと思います。 擬似的には、以下のような(1)のマクロで出来ますが、一度、マウスカーソルをその場所から外さないとカウントできません。正確に言うと、そのセルからセルに移動したことを感知する機能を利用しているのに過ぎません。つまり、同じ場所で、続けてクリックしても、カウントはされません。 2番目のサンプルのように、そこをコントロールツールなどのラベルやボタンを置く場合が、確実だと思います。これは、ただしく、マウスのクリックをカウントしています。ただし、セルや数式バーからの入力には直接反映しません。 その使い方、用途によって利用法が変るかと思います。 (1) '---------------------------------------------- 'シートモジュール Dim myCount As Integer Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address(0, 0) <> "A1" Then Exit Sub Select Case myCount Case 0 Target.Interior.ColorIndex = 3 '赤 myCount = 1 Case 1 Target.Interior.ColorIndex = xlColorIndexNone Target.Value = "×" myCount = 2 Case 2 Target.ClearContents myCount = 0 End Select End Sub (2) '----------------------------------------------------- 'シートモジュール(モジュールレベルの変数を使っても可能ですが、説明がややこしくなるので、Static 変数を使いました) Private Sub Label1_Click() Static CountClick As Integer Select Case CountClick Case 0 Label1.BackColor = vbRed CountClick = 1 Case 1 Label1.BackColor = vbWhite Label1.Caption = "×" CountClick = 2 Case 2 Label1.Caption = "" CountClick = 0 End Select End Sub
補足
親切にありがとうございます。 試してみたいのですが、ド素人で全くわかりません。 この例文をセルにコピペで良いのでしょうか? 少しVBAの勉強しますね。 申し訳ありません。
- hana-hana3
- ベストアンサー率31% (4940/15541)
VBA(プログラムを作成)だと可能です。
補足
VBAですか…。 話には聞いていましたが、難しいんですよね。 初心者にも可能でしょうか?
お礼
何度もご親切にありがとうございました。 この方法でトライしてみます。 エクセル、奥深いですね。 みなさんすごいです。(尊敬)