[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルをダブルクリックすると、別シートの同じ値を持つセルへ移動』(ひーぽん)
こんにちは。
マクロで下記を実行したくお知恵を下さい。
シート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: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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.