Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2718 / 13644 ツリー ←次へ | 前へ→

【66396】Worksheet BeforeRightClick Koji 10/9/2(木) 21:11 質問[未読]
【66398】Re:Worksheet BeforeRightClick かみちゃん 10/9/2(木) 21:23 発言[未読]
【66399】Re:Worksheet BeforeRightClick kanabun 10/9/2(木) 21:31 発言[未読]
【66400】Re:Worksheet BeforeRightClick UO3 10/9/2(木) 21:35 回答[未読]
【66401】Re:Worksheet BeforeRightClick kanabun 10/9/2(木) 21:40 発言[未読]

【66396】Worksheet BeforeRightClick
質問  Koji  - 10/9/2(木) 21:11 -

引用なし
パスワード
   みなさんこんばんは、質問です。シート上の任意のセルを右クリックをした時にa1にそのセル番地が表示され、二度目にまた任意のセル番地をクリックするとb1にそのセル番地が表示されるようにするにはどうしたらいいのでしょうか?一度目と二度目のクリックでは取得されたセル番地の表示を違うセルに表示させたいのです。
奇数回目のクリックはa1、偶数回目はb1に表示させるという考え方でも可です。

【66398】Re:Worksheet BeforeRightClick
発言  かみちゃん E-MAIL  - 10/9/2(木) 21:23 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> シート上の任意のセルを右クリックをした時にa1にそのセル番地が表示され、
> 二度目にまた任意のセル番地をクリックするとb1にそのセル番地が表示される
> ようにするにはどうしたらいいのでしょうか?
> 一度目と二度目のクリックでは取得されたセル番地の表示を違うセルに表示
> させたいのです。
> 奇数回目のクリックはa1、偶数回目はb1に表示させるという考え方でも可です。

シートモジュールに以下のようなコードを記述するとできると思います。

Dim lngCount As Long

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 lngCount = lngCount + 1
 Select Case lngCount Mod 2
  Case 1 '奇数
   Range("A1").Value = Target.Address
  Case 0 '偶数
   Range("B1").Value = Target.Address
 End Select
End Sub

【66399】Re:Worksheet BeforeRightClick
発言  kanabun  - 10/9/2(木) 21:31 -

引用なし
パスワード
   ▼Koji さん:

こんにちは。
改行のない文章はちょっと読みにくいです。

>シート上の任意のセルを右クリックをした時に
> 取得されたセル番地の表示を違うセルに表示させたいのです。

>奇数回目のクリックはa1、偶数回目はb1に表示させるという考え方でも可です。

右クリックされたときには Worksheet_BeforeRightClick()
というイベントが発生します。
それを使えばいいと思いますけど?

↓対象シートのモジュールに書いてください。
' ------------------------------
Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  Dim c As Range
  Cancel = True
  If Val([A1].ID) > Val([B1].ID) Then
    Set c = [B1]
  Else
    Set c = [A1]
  End If
  c.Value = Target.Address(0, 0)
  c.ID = Val(c.ID) + 1
End Sub

【66400】Re:Worksheet BeforeRightClick
回答  UO3  - 10/9/2(木) 21:35 -

引用なし
パスワード
   ▼Koji さん:

こんばんは

かみちゃんさんから既に回答がでていますし、かわりばえもしませんが
以下のようなコードでも。
右クリックで表示されるドロップダウンメニューを残したい場合は
Cancel = True を削除してください。

Option Explicit

Dim flag As Boolean

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 flag = Not flag
 If flag Then  ' 奇数
  Range("A1").Value = Target.Address
 Else      ' 偶数
  Range("B1").Value = Target.Address
 End If
 Cancel = True
End Sub

【66401】Re:Worksheet BeforeRightClick
発言  kanabun  - 10/9/2(木) 21:40 -

引用なし
パスワード
   上のを もっとまとめると、

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
                     Cancel As Boolean)
  Dim c As Range
  Cancel = True
  Set c = [A1].Offset(, -(Val([A1].ID) > Val([B1].ID)))
  c.Value = Target.Address(0, 0)
  c.ID = Val(c.ID) + 1
End Sub

# でも、トリッキーですね(-_-)

2718 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free