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

※上記の郵便番号云々は例です。
バージョンは、2000です。

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2006/08/24 12:08:55
  • 終了:2006/08/28 11:21:10

回答(3件)

id:hiro7days No.1

hiro7days回答回数391ベストアンサー獲得回数322006/08/24 12:24:16

ポイント5pt

ハイパーリンク


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


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

ご参考下さい。

id:P-mako

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

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

ので、違います。

シートは2つのみです。

2006/08/24 12:41:26
id:ota2244 No.2

ota2244回答回数77ベストアンサー獲得回数42006/08/24 12:53:03

ポイント35pt

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


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

id:P-mako

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

2006/08/24 13:02:23
id:robbie21 No.3

robbie21回答回数34ベストアンサー獲得回数12006/08/28 06:20:38

ポイント40pt

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

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

id:P-mako

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

完璧に近いです。

2006/08/28 11:19:46

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません