[[20161120173511]] 『セルをダブルクリックすると、別シートの同じ値を』(ひーぽん) ページの最後に飛ぶ

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

 

『セルをダブルクリックすると、別シートの同じ値を持つセルへ移動』(ひーぽん)

こんにちは。
マクロで下記を実行したくお知恵を下さい。
シート1と2があるとします。
それぞれのシートに様々なデータが入っていますが、一部共通する情報もあります。
シート1で、あるセルをダブルクリックすると、シート2の同じ値を持つセルを選択したいです。
反対に、シート2で、あるセルをダブルクリックすると、シート1の同じ値を持つセルを選択したいです。

マクロを使って実施をしたいのですが、ご教授下さい。
よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:WindowsVista >


>あるセルをダブルクリックすると、

特定の列(または行)でしょうか

(マナ) 2016/11/20(日) 18:13


 私からも質問。

 シート1 の あるセル をダブルクリックしたとして、その際に、比較する シート2 の領域はどこでしょう。

 1.同じセル?
 2.どこかの特定の列または行?
 3.シート2のセル全体?

 また 2.3.の場合、同じ値のセルが複数あればどうしましょう?

(β) 2016/11/20(日) 18:25


このあたりを使うことになりそうですが
どこまでわかっていますか。

一部のセルをダブルクリックしたときだけマクロを実行する
http://www.relief.jp/itnote/archives/013874.php

Excel VBA 入門講座 検索 Find
http://excelvba.pc-users.net/fol7/7_1.html

別シートのセルにジャンプする
http://officetanaka.net/excel/vba/tips/tips125.htm

(マナ) 2016/11/20(日) 18:29


マナさん
特定の列または行ではありません。
よろしくお願いします。
(ひーぽん) 2016/11/21(月) 22:31

βさん
3になります。同じセルがあった場合は、上のセルの選択で構いません。

マナさん
きっと組み合わせればうまくやれるのでしょうが、何分初心者の為うまく組み合わせられません。

(ひーぽん) 2016/11/21(月) 22:35


 一例です。

 VBE画面、左上のプロジェクトエクスプローラの ThisWorkbook をダブルクリックしてください。
 ThisWorkbookモジュールがでてきます。そこに以下を貼り付け。
 対になるシート名を★のところで規定していますので、違っていれば実際のものに変更してください。

 Private Sub Workbook_SheetBeforeDoubleClick(ByVal sh As Object, ByVal Target As Range, Cancel As Boolean)
    Const NAME1 As String = "Sheet1"  '★
    Const NAME2 As String = "Sheet2"  '★
    Dim shX As Worksheet
    Dim c As Range

    Select Case sh.Name
        Case NAME1: Set shX = Sheets(NAME2)
        Case NAME2: Set shX = Sheets(NAME1)
    End Select

    If shX Is Nothing Then Exit Sub

    Cancel = True
    Set c = shX.UsedRange.Find(What:=Target.Value, LookAt:=xlWhole, After:=shX.UsedRange.Cells(shX.UsedRange.Count))
    If c Is Nothing Then
        MsgBox shX.Name & " には " & Target.Value & " が見当たりません"
    Else
        Application.Goto c
    End If

 End Sub

(β) 2016/11/21(月) 22:41


βさん
どうもありがとうございました!
長く実現できなかった事が一瞬で回答いただき感謝致します。

すみませんがもう少しわがまま聞いて下さい。
先ほどのマクロを応用して下記項目を追加したいです。

1.シート1のA列のセルをクリックすると、シート2のA列の中で同じセルがあれば移動。
 (無ければ存在しない旨のメッセージを表示)
2.シート2のA列のセルをクリックすると、シート3のA列の中で同じセルがあれば移動。
 シート3のA列のセルをクリックすると、シート2のA列の中で同じセルがあれば移動。
 (無ければ存在しない旨のメッセージを表示)

どうぞよろしくお願いいたします。
(ひーぽん) 2016/11/21(月) 23:33


 基本、アップ済みのコードの相手関係を増やし、A列チェックをいれるだけなんですが。

 Private Sub Workbook_SheetBeforeDoubleClick(ByVal sh As Object, ByVal Target As Range, Cancel As Boolean)
    Const NAME1 As String = "Sheet1"  '★
    Const NAME2 As String = "Sheet2"  '★
    Const NAME3 As String = "Sheet3"  '★
    Dim shX As Worksheet
    Dim c As Range

    If Intersect(Target, sh.Columns("A")) Is Nothing Then Exit Sub

    Select Case sh.Name
        Case NAME1: Set shX = Sheets(NAME2)
        Case NAME2: Set shX = Sheets(NAME3)
        Case NAME3: Set shX = Sheets(NAME2)
    End Select

    If shX Is Nothing Then Exit Sub

    Cancel = True
    Set c = shX.Columns("A").Find(What:=Target.Value, LookAt:=xlWhole, After:=shX.Cells(Rows.Count, "A"))
    If c Is Nothing Then
        MsgBox shX.Name & " には " & Target.Value & " が見当たりません"
    Else
        Application.Goto c
    End If

 End Sub

(β) 2016/11/22(火) 00:53


βさん
ご丁寧な対応、誠にありがとうございました。
(ひーぽん) 2016/11/22(火) 07:30

コメント返信:

[ 一覧(最新更新順) ]


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