人に聞けない痔の悩み、これでスッキリ >>

Excel2003を使っています。

A1:Z80のセル範囲から指定した値を検索し、その値の番地を取得する方法を教えてほしいです。
重複する値は入力されていませんが、空白セルもあります。

他のシートの任意のセルに検索したい値を入力し、見つけた番地にたいするリンクを設定したいのです。

VBAでも関数でもいいので、力を貸して下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

●マクロの記録をとり(この場合検索操作)基礎的なことは勉強せよ


マクロの記録に言及して無いが、
新しいマクロの記録モードで、検索の操作をして、でてきたコードをじっくり考えること。そんなこともせず(従って焦点が絞れてない)、全部解答を書いてくださいという、コーナーではないはず。
●WEB照会をせよ。
VBAの本でも必ず記述があり、WEBでも「Find メソッド」で照会すれば沢山の記事がある。
まず
http://officetanaka.net/excel/vba/cell/cell11.htm
ほか多数。

この回答への補足

自家育成、データ、居場所。
この三つのシートのセルをHyperlinkとGotoで移動しています。

"自家育成""居場所"間の移動だけならデータシートは必要ないのですが、
"自家育成"シートはコピーして増えていくので、"居場所"から"自家育成"シートにリンクさせる時の番地指定が難しいと感じました。
そのためリンクさせたい全ての値の情報が入っている"データ"シートと"自家育成"の間にあらかじめリンクを設定しておくことで、"居場所"から"データ"にとび、Followを使ってさらに"自家育成"に戻れるようにしました。

"自家育成"に値を入力した時、"データ"から"自家育成"に戻るリンクを設置していますが、"居場所"に値を入力する前に"自家育成"からダブルクリックで"居場所"のセルに移動しようとすると、
"データ"で設置されていたHyperlinkの移動先が変わっているのです。
"自家育成"のセルに移動するはずだったのが、"データ"シート内の"自家育成"シートで記入した番地に移動する設定に変わります。
"自家育成"でC1に入力した時は、***xls'自家育成'!$C$1だったリンクの移動先が、、***xls'データ'!$C$1になります。
"居場所"に目的の値が入力されているときはこの不具合は起こらないのですが。

1つのシートに複数のイベントが書かれています。
今回のコードは二つですが、両方ともC列に入力したりダブルクリックしたりしています。それが原因でしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 3 Then Exit Sub 'C列以外の変更なら処理を終了
If Target.Count > 1 Then Exit Sub 'セルを二つ以上選択した場合
If Target.Value = "" Then Exit Sub 'データの空の場合

Dim z, kennsaku, x

x = ActiveSheet.name
Set z = Worksheets("データ").Range("$B$1:$B$65536")
kennsaku = Application.Match(Target.Value, z, 0)

If IsNumeric(kennsaku) Then
Worksheets("データ").Hyperlinks.Add Anchor:=Worksheets("データ").Range(Cells(kennsaku, 2).Address), Address:="", SubAddress:="'" & x & "'!" & Target.Address & ""
End If
End Sub


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim banngoukennsaku

Set banngoukennsaku = Worksheets("居場所").Range("A1:Z80").Find(what:=Target, lookat:=xlWhole)

If banngoukennsaku Is Nothing Then
MsgBox "「居場所」には記載されていません。"
Exit Sub
Else
Application.Goto reference:=Worksheets("居場所").Range(banngoukennsaku.Address)
End If
End Sub

補足日時:2008/03/15 00:44
    • good
    • 0
この回答へのお礼

大変失礼しました。
親切な回答者の方々に甘えすぎていたと反省しています。

Findを使うというヒントをもらえたことで、ほとんど解決しました。
ところが、コードを実行して、理解できない事が起こったので捕捉の部分に載せてみます。
もしよかったらまた相談に乗ってほしいです。

お礼日時:2008/03/14 23:59

Find と Address を調べてみましょう。

    • good
    • 0
この回答へのお礼

Findを調べたところほとんど解決しました。
ありがとうございます。

お礼日時:2008/03/15 00:46

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング