大量の名簿への入力・検索を簡素化する為表題のようなVBAか関数を教えていただきたいです。
条件は下記の通りです。
・B28からB30027まで000001~300000までの連番があります。
・連番を検索するセルB26へ連番の数字を入力するとその連番のセルの右隣のセルへジャンプします。
(000005と入力するとC32へジャンプし、すぐ名前を入力できるようにしたいです。)
・C列の名前、D列の住所、E列の電話番号を入力し、E列の入力でEnterを押した時に必ずB26に戻るようにしたいです。
B26に検索番号入力してC26にハイパーリンクのクリックボタンのような物を試しましたが知識不足の為行き詰まってしまい困っております。
知っている方おりましたらご教授願います。
No.3ベストアンサー
- 回答日時:
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
ありがとうございます。
さっそく修正していただいたコードを入力し実行してみました。
E列で入力しEnter後メッセージが出てきました。
実行時エラー’28’:
スタック領域が不足しています。
何度か試してみると
’ClearContents’メソッドは失敗しました
というメッセージが出たので、コード内の
Range("B26").ClearContents
を削除してE列まで入力ところ、セルB26に検索Noは残りますがエラーメッセージは出ずにB26にジャンプしました。
’スタック領域’ のエラーは命令がループするような感じというところまでは調べてみて解りましたが、対処例のFor next等はVBA初心者の私にはまだ理解できてない為今後の課題となりました。
いろいろと教えていただきありがとうございました。
No.4
- 回答日時:
個人的にはフォーム機能がお勧めなんですが、検索後のセル移動自体が面倒に思われているならやっぱりマクロになるんですかね…
https://121ware.com/qasearch/1007/app/servlet/re …
ありがとうございます。
フォーム機能の存在を初めて知り大変勉強になりました。
仰る通り多量のデータで連番入力ではなく飛び飛びのNo入力の為、あてはまるマクロはないものかと探しておりました。
No.2
- 回答日時:
希望されていることとは少し違うので参考程度に。
戻る方法を希望されているのはスクロールが必要だからではないですか?
ウインドウ枠の固定をすればスクロールせずに常に表示することができます。
http://www.becoolusers.com/excel/freeze-panes.html
NOを指定してデータの入力を行っているようですので
オートフィルタを使用してはどうでしょうか?
http://www.becoolusers.com/excel/auto-filter.html
回答ありがとうございます。
教えていただいたページ以外も見てみましたがいろいろと勉強になる内容がありました。
教えていただきありがとうございます。
No.1
- 回答日時:
こんにちは!
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
回答ありがとうございます。
さっそく検索セルB26に数字を入力したのですが全て該当なしになってしまいます。
おそらく、赤文字のNoがセルの書式設定のユーザー設定で”000000”にしていたからでは?と思い、標準にしたら1桁のNoになりますが検索可能でした。
できれば赤文字連番は6桁で、B26での検索は正数(No.000077なら77で検索)でできるよにしたいのですが、可能でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
複数の文字列のいずれかが含ま...
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
数式が入ったセルを含めて、数...
-
スペースとスペースの間の文字...
-
エクセルでセルの値分の個数の...
-
エクセルで1列全部10倍したい
-
エクセルのsumifでかけ算してか...
-
列の数字に100をかけたい
-
別のセルに値が入力されたら、...
-
エクセルで表示されている数字...
-
エクセル:横長の表を改行して...
-
Excelのセル内文字の並び替えに...
-
フィルターかかってる時のSU...
-
Excel HLOOKUPで...
-
エクセルで公平にチーム分けす...
-
エクセルで小数を含む数値の抽出
-
エクセルで合計欄を結合し、左...
-
エクセルで2行まとめて並び替...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
複数の文字列のいずれかが含ま...
-
SUMに含まれる範囲から特定のセ...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
スペースとスペースの間の文字...
-
エクセルで表示されている数字...
-
エクセル:横長の表を改行して...
-
列の数字に100をかけたい
-
別のセルに値が入力されたら、...
-
エクセルで1列全部10倍したい
-
エクセルでセルの値分の個数の...
-
Excelのセル内文字の並び替えに...
-
エクセルで曜日に応じた文字を...
-
エクセルで小数を含む数値の抽出
-
エクセルのsumifでかけ算してか...
-
時間を「昼間」と「夜間」に分...
-
エクセルで、毎日の走行距離(...
-
アルファベットを含む数をエク...
-
EXCELのハイホン区切りの数字並...
おすすめ情報