ちょっと変わったマニアな作品が集結

大量の名簿への入力・検索を簡素化する為表題のようなVBAか関数を教えていただきたいです。
条件は下記の通りです。

・B28からB30027まで000001~300000までの連番があります。
・連番を検索するセルB26へ連番の数字を入力するとその連番のセルの右隣のセルへジャンプします。
(000005と入力するとC32へジャンプし、すぐ名前を入力できるようにしたいです。)
・C列の名前、D列の住所、E列の電話番号を入力し、E列の入力でEnterを押した時に必ずB26に戻るようにしたいです。

B26に検索番号入力してC26にハイパーリンクのクリックボタンのような物を試しましたが知識不足の為行き詰まってしまい困っております。
知っている方おりましたらご教授願います。

「エクセルで、検索語移動し入力後同じ場所に」の質問画像

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

A 回答 (5件)

No.1です。



>赤文字のNoがセルの書式設定のユーザー設定で”000000”にしていたからでは・・・

対処してみました。
尚、前回のコードではE列の26行目まで、またはB列データの最終行以降の行のE列データの変更があってもマクロが実行されてしまいますので、
その辺も修正してみました。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim c As Range, lastRow As Long, myRng As Range
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Set myRng = Union(Range("B26"), Range(Cells(28, "E"), Cells(lastRow, "E")))
If Intersect(Target, myRng) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Column = 2 And .Value <> "" Then
Set c = Range(Cells(28, "B"), Cells(lastRow, "B")).Find(what:=Format(.Value, "000000"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
c.Offset(, 1).Select
Else
MsgBox "該当データなし"
.Select
End If
Else
Range("B26").Select
Range("B26").ClearContents
End If
End With
End Sub 'この行まで//

今度はどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
さっそく修正していただいたコードを入力し実行してみました。
E列で入力しEnter後メッセージが出てきました。

実行時エラー’28’:
スタック領域が不足しています。

何度か試してみると 
’ClearContents’メソッドは失敗しました
というメッセージが出たので、コード内の
Range("B26").ClearContents
を削除してE列まで入力ところ、セルB26に検索Noは残りますがエラーメッセージは出ずにB26にジャンプしました。
’スタック領域’ のエラーは命令がループするような感じというところまでは調べてみて解りましたが、対処例のFor next等はVBA初心者の私にはまだ理解できてない為今後の課題となりました。
いろいろと教えていただきありがとうございました。

お礼日時:2016/02/03 00:26

ウインドウ枠の固定で良さそうですが


参考程度でC26セルに
=HYPERLINK("#C"&27+B26&":E"&27+B26)

1. C26セルをクリックすると対象の行のC,D,E列が選択されます
2. 選択されたまま、入力します
3. [Alt]+[←]でC26セルに戻ります
4. 続けて[←]でB26セルに戻ります
    • good
    • 0
この回答へのお礼

ありがとうございます。
入力作業が私だけならこの方法でも良かったのですが、PC初心者でも入力できるようにEnterだけでジャンプできる機能を探しておりました。

お礼日時:2016/02/03 00:51

個人的にはフォーム機能がお勧めなんですが、検索後のセル移動自体が面倒に思われているならやっぱりマクロになるんですかね…



https://121ware.com/qasearch/1007/app/servlet/re …
    • good
    • 0
この回答へのお礼

ありがとうございます。
フォーム機能の存在を初めて知り大変勉強になりました。
仰る通り多量のデータで連番入力ではなく飛び飛びのNo入力の為、あてはまるマクロはないものかと探しておりました。

お礼日時:2016/02/03 00:42

希望されていることとは少し違うので参考程度に。



戻る方法を希望されているのはスクロールが必要だからではないですか?
ウインドウ枠の固定をすればスクロールせずに常に表示することができます。
http://www.becoolusers.com/excel/freeze-panes.html

NOを指定してデータの入力を行っているようですので
オートフィルタを使用してはどうでしょうか?
http://www.becoolusers.com/excel/auto-filter.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
教えていただいたページ以外も見てみましたがいろいろと勉強になる内容がありました。
教えていただきありがとうございます。

お礼日時:2016/02/02 14:57

こんにちは!



VBAでの一例です。
C列が選択された後は、C・D・E列の順に入力する!という前提です、

シートモジュールになりますので、
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)B26セルに番号を入力し
その行のC~E列まで順に必要事項を入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim c As Range, lastRow As Long
If Intersect(Target, Range("B26,E:E")) Is Nothing Or Target.Count > 1 Then Exit Sub
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
With Target
If .Column = 2 And .Value <> "" Then
Set c = Range(Cells(28, "B"), Cells(lastRow, "B")).Find(what:=.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
c.Offset(, 1).Select
Else
MsgBox "該当データなし"
.Select
End If
Else
Range("B26").Select
Range("B26").ClearContents
End If
End With
End Sub 'この行まで//

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとう

回答ありがとうございます。
さっそく検索セルB26に数字を入力したのですが全て該当なしになってしまいます。
おそらく、赤文字のNoがセルの書式設定のユーザー設定で”000000”にしていたからでは?と思い、標準にしたら1桁のNoになりますが検索可能でした。
できれば赤文字連番は6桁で、B26での検索は正数(No.000077なら77で検索)でできるよにしたいのですが、可能でしょうか?

お礼日時:2016/02/02 11:52

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル2010セル入力後指定の離れた場所に移動?

エクセルについての質問ですが、A1に文字を入力してEnterキーなどを押した後にA3などの離れた場所に自動で空白セルに移動させることはできるのでしょうか?いろいろ調べてみましたが解決できなかったのでわかる方がおりましたらお願いします。関数についてはよくわかりません。

Aベストアンサー

関数の問題ではありません。


ご相談に書かれたことは,例えば次のように設定しておくと出来ます。

手順:
A1セルを選び,ホームタブの書式▼から「セルのロック」を選ぶ(「セルのロック」の選択を外す)
A3セルを選び,ホームタブの書式▼から「セルのロック」を外す
必要に応じて,他の行きたいセルもセルのロックを外す

校閲タブから「シートの保護」を開始し,その際に「ロックされたセルの選択」のチェックを外してOKする。

A1に入力し,Enterすると,A3に移動する。

Qエクセル シート内の一番下のセルに移動したい

エクセル シート内の一番下のセルに移動したいです。
かなりのデータ量なので一番下への方法と中ごろへの移動の方法も教えて頂ければと思います。

Aベストアンサー

該当する列で連続した一番下のデータには、Ctrlキー+↓キーで飛びます。
シート内のどこからでもA1にはCtrlキー+Homeキーで飛びます。

中どころはちと難しいですが、一番下に飛んで、仮にA10000だったら、画面左上の「名前ボックス」にA5000と打ち込んでEnterキーではどうでしょう。


人気Q&Aランキング