![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
現在エクセルで名簿を作成しているのですが名簿が重複している場合に下記のような動作をさせることができないか悩んでおります。ご存じの方いましたらご回答よろしくお願いします。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「入力用」なのに「入力」でき...
-
白紙のパワーポイントにサブタ...
-
枠の中に文章を入力し、枠サイ...
-
「崎」の、 「奇」の部分が「...
-
ワードで、勝手に平体になる
-
外部参照のリンク更新ボタン
-
Excel で対応する括弧の強調表...
-
GIMPの文字入力
-
エンターを押しても決定されな...
-
WordやExcelで英数字のみ半角ま...
-
dynabook 画面拡大した時の解決...
-
ハイフンが真ん中にうてません。
-
テンキーの1を押すと2つ数字...
-
HDMIと電源が落ちる関係?
-
縦書きにした時の数字を漢数字...
-
PC メーカーロゴが出ないのに W...
-
エクセルで引き算をする場合、...
-
MacBookのデュアルディスプレイ...
-
JISコードで入力する方法を...
-
数字が二つ出てしまうのはなぜ?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「入力用」なのに「入力」でき...
-
白紙のパワーポイントにサブタ...
-
「崎」の、 「奇」の部分が「...
-
枠の中に文章を入力し、枠サイ...
-
検索バーに入力した文字が消える
-
電話番号追跡サイト?
-
マイクロソフトワードの数式入...
-
外部参照のリンク更新ボタン
-
勝手に検索画面が立ち上がる
-
記憶された文字の消去方法
-
WORDで第二水準の漢字が必要で...
-
エクスプローラのアドレス欄に...
-
Windowsのショートカットキーの...
-
数式パレットを表示させたいの...
-
excelコンボボックスの自動表示...
-
affect と effect と influence...
-
特殊?な文字の入力
-
Excel で対応する括弧の強調表...
-
オートコンプリートの表示順は...
-
時刻の修正ができない
おすすめ情報