• ベストアンサー

エクセルで…

すみません、くだらない質問なんですけど。 エクセルで質問です。 あるセルのうえで、マウスの左ボタンを1回クリックすると塗りつぶす。続けてもう一度クリックすると×を表示、もう一回クリックすると空に戻る。 なんてことは可能ですか? 初心者の私には想像もつきません。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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 までを上書きします。 どちらがよいかは、ご自身で試しながらお決め下さい。

ma5sh5
質問者

お礼

何度もご親切にありがとうございました。 この方法でトライしてみます。 エクセル、奥深いですね。 みなさんすごいです。(尊敬)

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

シートのイベントに 右クリックのイベントはあります。 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 上記は欠点のご指摘があるかもしれません。

ma5sh5
質問者

お礼

ご丁寧にありがとうございます。 私は超初心者で、VBAが全くわかりません。 そこから勉強してみることにしますね。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 もしかしたら、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

ma5sh5
質問者

補足

親切にありがとうございます。 試してみたいのですが、ド素人で全くわかりません。 この例文をセルにコピペで良いのでしょうか? 少しVBAの勉強しますね。 申し訳ありません。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

VBA(プログラムを作成)だと可能です。

ma5sh5
質問者

補足

VBAですか…。 話には聞いていましたが、難しいんですよね。 初心者にも可能でしょうか?