回答編集履歴

2

コード例の追記

2019/07/10 04:25

投稿

hatena19
hatena19

スコア33722

test CHANGED
@@ -35,3 +35,35 @@
35
35
  そのためには、`Sheet2$C1$` から `Sheet2`と`C1`を取り出す必要があります。
36
36
 
37
37
  いろいろ方法はありますが、InStr関数、Left関数、Mid関数を組み合わせる方法と、Split関数を使う方法があります。
38
+
39
+
40
+
41
+ ---
42
+
43
+ なかなか、苦労しているようなので、正解のコード例を出しておきます。
44
+
45
+
46
+
47
+ ```vba
48
+
49
+ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
50
+
51
+ If Not Intersect(Target, Me.Range("A1:A2")) Is Nothing Then
52
+
53
+ Dim ary As Variant
54
+
55
+ ary = Split(Target.Value, "$") '$ で分割して配列に変換
56
+
57
+ Application.Goto Worksheets(ary(0)).Range(ary(1))
58
+
59
+ Cancel = True 'ダブルクリックはなかったことに
60
+
61
+ End If
62
+
63
+ End Sub
64
+
65
+ ```
66
+
67
+
68
+
69
+ A1:A2 が空欄だった場合等のエラー処理はしてないので、必要に応じて追加してください。

1

ヒント追加

2019/07/10 04:25

投稿

hatena19
hatena19

スコア33722

test CHANGED
@@ -23,3 +23,15 @@
23
23
  あなたのコードはそのようになってませんね。
24
24
 
25
25
  これをヒントにもうすこしご自分でチャレンジしてみては。
26
+
27
+
28
+
29
+ ---
30
+
31
+ エラーの原因は、Goto の引数には Rangeオブジェクトを渡す必要があるのに、`Sheet2$C1$`という文字列を渡しているからでしょう。
32
+
33
+ `Sheet2$C1$`を Rangeオブジェクトに変換する必要があります。
34
+
35
+ そのためには、`Sheet2$C1$` から `Sheet2`と`C1`を取り出す必要があります。
36
+
37
+ いろいろ方法はありますが、InStr関数、Left関数、Mid関数を組み合わせる方法と、Split関数を使う方法があります。