大量の名簿への入力・検索を簡素化する為表題のような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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
Excel 漢字二文字の先頭と最後 ...
-
数式が入ったセルを含めて、数...
-
エクセル:横長の表を改行して...
-
エクセルで表示されている数字...
-
Excel上でのデータ数字が連番で...
-
問合せ Excel 超初心者です、教...
-
エクセルでセルの値分の個数の...
-
SUMに含まれる範囲から特定のセ...
-
フィルターかかってる時のSU...
-
列の数字に100をかけたい
-
エクセルで、ある1つの列を複...
-
エクセルで2行まとめて並び替...
-
VBAを使ったエクセルでの画像複...
-
別のセルに値が入力されたら、...
-
銀行の振込み手数料をエクセル...
-
【EXCEL】指定したセルの値を他...
-
HYPERLINKとADDRESSとMATCHの組...
-
スペースとスペースの間の文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
SUMに含まれる範囲から特定のセ...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
エクセルでセルの値分の個数の...
-
C列にF列の担当者(A〜)を順番...
-
スペースとスペースの間の文字...
-
エクセル:横長の表を改行して...
-
列の数字に100をかけたい
-
エクセルで表示されている数字...
-
エクセルのsumifでかけ算してか...
-
「エクセル」特定の行(セル)...
-
エクセルで曜日に応じた文字を...
-
エクセルで小数を含む数値の抽出
-
データの入力規則 Excelです。 ...
-
エクセルで、毎日の走行距離(...
-
Excelのセル内文字の並び替えに...
-
エクセルで1列全部10倍したい
-
エクセルにデータを入力すると...
おすすめ情報