人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBA(Excel)で、Sheet1に郵便番号と住所の一覧があり、Sheet2に会員の名前と郵便番号の一覧があるような場合、Sheet2の郵便番号をクリックすると、Sheet1の郵便番号にジャンプするようにするには、どのような記述になりますか?
※上記の郵便番号云々は例です。
バージョンは、2000です。

●質問者: P-mako
●カテゴリ:コンピュータ インターネット
✍キーワード:Excel VBA クリック ジャンプ バージョン
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hiro7days
●5ポイント

ハイパーリンク


http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+2004...


こちらに同じ例がありましたので、

ご参考下さい。

◎質問者からの返答

このサイトの例だと、シート名が郵便番号で、各シートに住所が1つ入るような膨大なシートが必要になります。

→ 私の例のSheet2が例のシート名「目次」に相当

ので、違います。

シートは2つのみです。


2 ● ota2244
●35ポイント

http://www.hatena.ne.jp/

URLはダミーです。

sheet1に郵便番号の一覧(100件)があり、1列目に郵便番号が設定されているものとして記述します。


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim zip As String

Dim row As Long


If ActiveCell.Column <> 1 Then

Exit Sub

End If


zip = Target.Cells(1, 1)


For row = 1 To 100

If ActiveWorkbook.Sheets("sheet1").Cells(row, 1) = zip Then

ActiveWorkbook.Sheets("sheet1").Activate

ActiveWorkbook.Sheets("sheet1").Cells(row, 1).Select

Exit For

End If

Next


End Sub


とすればいけると思います。

◎質問者からの返答

ご回答ありがとうございました。


3 ● robbie21
●40ポイント

セルにハイパーリンクを設定する方法です。

1. まず、標準モジュールに以下のマクロを作成します。

'リンク元の値とリンク先のセルの値に同じものがあればリンクを設定する。
Sub SetHyperLinkByCellValue(リンク元 As Range, リンク先 As Range)

 Set リンク元 = Intersect(リンク元, リンク元.Worksheet.UsedRange)
 Set リンク先 = Intersect(リンク先, リンク先.Worksheet.UsedRange)
 
 Dim Cel As Range
 For Each Cel In リンク元.Cells
 'すでにあるリンク・書式のクリア
 Cel.ClearFormats
 Cel.Hyperlinks.Delete
 
 Dim Target As Range
 Set Target = リンク先.Find(Cel.Value)
 If Not Target Is Nothing Then
 Cel.Hyperlinks.Add Anchor:=Cel, Address:="", SubAddress:= _
 Target.Worksheet.Name & "!" & Target.Address
 End If
 Next
End Sub

2.次に、リンク元、リンク先となるセルに「名前」をつけておきます。

この場合、「会員_郵便」「住所_郵便」とします。

3. WorksheetのChangeイベントを以下のように設定します。

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim リンク元 As Range
 Set リンク元 = Intersect(Target, ThisWorkbook.Names("会員_郵便").RefersToRange)
 Dim リンク先 As Range
 Set リンク先 = ThisWorkbook.Names("住所_郵便").RefersToRange
 SetHyperLinkByCellValue リンク元, リンク先
End Sub

これだけでも動きますが、すでに入力済みの値や、マクロを無効にして入力したときの値にも設定されるように

4.WorkBooksのOpenイベントを以下のように設定します。

Private Sub Workbook_Open()
 Dim リンク元 As Range
 Set リンク元 = ThisWorkbook.Names("会員_郵便").RefersToRange
 Dim リンク先 As Range
 Set リンク先 = ThisWorkbook.Names("住所_郵便").RefersToRange
 SetHyperLinkByCellValue リンク元, リンク先
End Sub

以上。


---

マクロを使わない方法も考えてみたので、参考まで。

*数式を使ってリンクを設定する。

http://d.hatena.ne.jp/robbie21/20060825/1156476528

◎質問者からの返答

ご回答ありがとうございました。

完璧に近いです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ