プロが教えるわが家の防犯対策術!

いつもお世話になってます。

例えばB列に会員番号が2千人分入ってるセルがあります。

同じシートの中の一番上にあるセルに会員番号を入力し、その隣にフォームからコマンドボタンを作り、そのボタンを押すと該当会員番号のセルの位置に移動する。

といったものを作りたいのですが、そのヒント(手本)になるものがありましたらURL等教えてください。

また簡単であれば、その方法を教えてください。
登録するマクロの作り方が分かりません。よろしくお願いします。

※ オートフィルターの機能でも出来ることは知ってます。

A 回答 (4件)

こんにちは。



>登録するマクロの作り方が分かりません。よろしくお願いします。
>ヒント

B列と特定でき、重複がない場合は、こんな風に作ります。
まず、コントロールツールバーを出して、コマンドボタンを貼り付けます。フォームは、取り付け方がちょっと面倒ですから、コントロールツールにしてください。

貼り付けたら、ダブルクリックします。そうすると画面が変わって、
'------------------------------------
Private Sub CommandButton1_Click()

End Sub
'------------------------------------
のような表示になるはずです。ならない場合は、コントロールツールバーの三角定規のところが「オフ」になっているのではないか、とおもいますから、「オン」にしてください。

次に、テキストボックス(コントロールツール上)を設けてもよいのですが、ここでは、セルを代わりにします。(テキストボックスのほうが便利です)

それで、以下のように中身を入れてあげます。

Private Sub CommandButton1_Click()
'----------以下貼り付け--------------
'設定場所
Const INPUTCELL As String = "E1"
Dim i As Long
If Range(INPUTCELL).Value = "" Then MsgBox INPUTCELL & " に値が入っていません。": Exit Sub
On Error Resume Next
 i = 0
 i = WorksheetFunction.Match(Range(INPUTCELL), Columns("B"), 0)
On Error GoTo 0
 If i > 0 Then
  Application.Goto Cells(i, 2), False
  Beep
 Else
  MsgBox Range(INPUTCELL).Value & " は、見つかりません。", vbInformation
 End If
'----------以上貼り付け終わり---------
End Sub


貼り付けたら、Alt + Q で、Visual Basic Editor 画面を閉じます。
後は、コントロールツールバーの青い三角定規が、「オン」になっていたら、「オフ」にして戻し、コントロールツールバーを、非表示にしてあげます。

これは、本格的なマクロとは違いますが、簡易型なのに、とても、検索スピードが速いのです。

この回答への補足

みなさまありがとうございました。
おかげさまで、仕事上で1つの作業がようやく峠を越えてホっとしてます。教えていただいたものの中には上手く活かせないものもあり、せっかく教えていただいたのに申し訳ない気持ちもありますが、別の機会に活かせるようなりたいと思います。
このIDでは仕事用なので質問ばかりしてますが、私も別のジャンルで誰かに役立ててもらえる回答をしたいとあらためて思いました。
また、よろしくお願いします。(笑)

補足日時:2006/09/12 07:03
    • good
    • 0
この回答へのお礼

ありがとうございました。非常に解りやすい説明でした。

お礼日時:2006/09/12 07:03

#1が、あらら、です。



> =ADDRESS(MATCH(B1,B3:B2000,3)+2,2)
どうして ,3 なんて記述してしまったのでしょう。

=ADDRESS(MATCH(B1,B3:B2000,0)+2,2)
に訂正してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/12 07:02

こんにちは。



例えば、こんなカンジでいかがでしょう?

Sub 検索()
Dim TargetStr, LastR, r As Integer
Dim TargetArea As Range, FoundCell As Range

TargetStr = Cells(1, "B").Value '検索値
If TargetStr = "" Then '検索値入力なしの場合
MsgBox "検索値を入力してください" 'メッセージ表示
Exit Sub
End If '検索値入力ありの場合、検索へ
LastR = Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row
Set TargetArea = Range(Cells(2, "B"), Cells(LastR, "B")) '範囲を設定
Set FoundCell = TargetArea.Find(what:=TargetStr, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False) '検索設定
If Not FoundCell Is Nothing Then '検索が見つかった場合
r = FoundCell.Row
Cells(r, "B").Activate 'セルを選択
Else
MsgBox "見つかりません" 'メッセージ表示
End If
End Sub

私もVBを勉強中なので、この程度しかできないのですが・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/12 07:01

B3:B2000 に会員番号。


B1に検索する会員番号を入力。
C1上にコマンドボタンを配置。
――としますと、

C1に =ADDRESS(MATCH(B1,B3:B2000,3)+2,2) と入力しておけば、コマンド
ボタンに登録するマクロは、次のような簡単な内容で済みますね。
Sub Test()
 Range(Range("C1").Value).Select
End Sub

B1に存在しない番号が入力されたりした場合のエラー処理は考慮していません。
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/09/12 07:00

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

このQ&Aを見た人はこんなQ&Aも見ています