現在エクセルで名簿を作成しているのですが名簿が重複している場合に下記のような動作をさせることができないか悩んでおります。ご存じの方いましたらご回答よろしくお願いします。
A列(氏名)B列(住所)
A列に氏名を入力していった時に同じ名前が既に入力されたいたら
すでに入力されている場所にカーソルが移動し「重複の確認メッセージを表示」その際に同姓同名の別人の場合で入力継続の場合は「元の場所にカーソルを戻す」同一人物の場合は入力したデータを「削除しカーソルはそのままの場所を保持する」ようにしたいのです。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
別人の場合は「元の場所にカーソルを戻す」けど、同一人物の場合は戻さない、ということでよろしいですか?(重複した名前にカーソルが飛んで、そのままの場所を保持、ということでしょうか)
シートタブを右クリックして「コードの表示」を選択すると、VBAの画面が出るので、その画面の右側に以下のマクロをコピーして貼り付けてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim T As Range, R As Range
Set T = Target.Cells(1, 1)
If T.Column <> 1 Or T.Value = "" Then Exit Sub
Set R = Range("A:A").Find(What:=T.Value, LookAt:=xlWhole)
If R.Row = T.Row Then Exit Sub
R.Select
If MsgBox("同姓同名の名前が既に入力されています。" & vbCrLf & _
"別人ならOKを、同じ人の場合はキャンセルを押してください", _
vbOKCancel, "重複あり") = vbCancel Then
Application.EnableEvents = False
T.ClearContents
Application.EnableEvents = True
Else
T.Select
End If
End Sub
貼り付けたらVBAの画面は閉じてかまいません。A列に氏名を入力したときに、同じ名前が既にあったらダイアログが出ます。OKを押すと別人とみなして選択セルを戻し、キャンセルを押すと入力した名前は消して、選択セルはその位置のままになります。
希望した動作と異なったり、何か不具合があれば補足をお願いします。
この回答への補足
早速試してみたのですが以下の点がうまく動きません。
ご教示よろしくお願いします
1.教えていただいた物をコピペした時、A1に最初に文字を入力してしまうと動かない(A1に数値を入力しておけば以後は文字でも動く)
2.実際に入力するのはC列なのですがRange("A:A").をRange("C:C").に
変更しても動かない。
以上よろしくお願いします
No.4
- 回答日時:
No.3です。
すみません、ちゃんと書くべきでした。Set R = Range("A:A").Find(What:=T.Value, LookAt:=xlWhole)
の行も
Set R = Range("C:C").Find(What:=T.Value, LookAt:=xlWhole)
に変えてください。
No.3
- 回答日時:
No.1です。
実際に氏名を入力するのはC列なのですね。それなら、上から4行目のIf T.Column <> 1 Or T.Value = "" Then Exit Sub
を
If T.Column <> 3 Or T.Value = "" Then Exit Sub
に変えてください。
この回答への補足
お忙しい中本当にありがとうございます。
現在白紙のワークシートに教えていただいたコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim T As Range, R As Range
Set T = Target.Cells(1, 1)
If T.Column <> 3 Or T.Value = "" Then Exit Sub
Set R = Range("A:A").Find(What:=T.Value, LookAt:=xlWhole)
If R.Row = T.Row Then Exit Sub
R.Select
If MsgBox("同姓同名の名前が既に入力されています。" & vbCrLf & _
"別人ならOKを、同じ人の場合はキャンセルを押してください", _
vbOKCancel, "重複あり") = vbCancel Then
Application.EnableEvents = False
T.ClearContents
Application.EnableEvents = True
Else
T.Select
End If
End Sub
を張り付けたのですが
実行時エラー91
オブジェクト変数またはwithブロック変数が設定されていません。
と表示され(6行目の「If R.Row = T.Row Then」がハイライト表示)
正常に動作しません。ご教示よろしくお願いします。
No.2
- 回答日時:
あっちこっち移動するのはかえってややこしいかと。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Column = 1 Then Exit Sub
If Target.Count <> 1 Then Exit Sub
strName = Target.Value
'同じ値の個数
intr = Application.WorksheetFunction.CountIf(Range("A1:A9999"), Target.Value)
If intr > 1 Then
Set fr = ActiveSheet.Columns(1).Find(strName)
msg = strName & " は既に存在します。" & vbLf & vbLf & _
" " & fr.Address & " " & fr.Value & " " & fr.Offset(, 1).Value & vbLf & vbLf & _
"このまま入力を継続する場合は、[OK] を" & vbCrLf & _
"入力した値を削除する場合は、 [キャンセル] をクリックして下さい。"
Title = "重複の確認"
param = vbOKCancel + vbExclamation + vbDefaultButton1 + vbApplicationModal
ans = MsgBox(msg, param, Title)
Select Case ans
Case 1 '「OK」ボタンの場合
MsgBox "入力を続行してください"
Case 2 '「キャンセル」ボタンの場合
Target.ClearContents
MsgBox strName & " の入力をキャンセルしました。"
End Select
End If
Set fr = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) エクセルで列の行の重複の検索方法を教えてください。 8 2022/10/11 14:51
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) VBAで重複データを確認したい 5 2022/10/07 16:24
- Excel(エクセル) Excelの関数について 3 2022/11/13 23:47
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「入力用」なのに「入力」でき...
-
白紙のパワーポイントにサブタ...
-
枠の中に文章を入力し、枠サイ...
-
「崎」の、 「奇」の部分が「...
-
affect と effect と influence...
-
検索バーに入力した文字が消える
-
HTML CSS JavaScript PHPをどの...
-
エンターを押しても決定されな...
-
縦書きにした時の数字を漢数字...
-
emacsでカタカナ変換するにはど...
-
WordやExcelで英数字のみ半角ま...
-
ハイフンが真ん中にうてません。
-
HDMIと電源が落ちる関係?
-
全角カタカナを半角カタカナに...
-
再起動はコールドブートではな...
-
パソコン起動。変な英語が。そ...
-
SunFire V240を購入したのです...
-
Numpad_Divide とはどのキーで...
-
ACCESSの全角、半角・・・
-
テンキーの1を押すと2つ数字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
白紙のパワーポイントにサブタ...
-
「入力用」なのに「入力」でき...
-
「崎」の、 「奇」の部分が「...
-
枠の中に文章を入力し、枠サイ...
-
外部参照のリンク更新ボタン
-
オートコンプリートの表示順は...
-
マイクロソフトワードの数式入...
-
勝手に検索画面が立ち上がる
-
電話番号追跡サイト?
-
WORDで第二水準の漢字が必要で...
-
検索窓に入力中にカーソルが移...
-
どう説明したらいいのかも・・・
-
検索履歴の消し方
-
特殊?な文字の入力
-
yahoo 等の検索に入力した文字...
-
excelコンボボックスの自動表示...
-
検索バーに入力した文字が消える
-
記憶された文字の消去方法
-
コマンドプロンプト画面で入力...
-
記憶された文字がダブルクリッ...
おすすめ情報