下記はAシートのコードで、C列をTargetとしています。C列に社員番号を入力し、Enterを押すと社員名に切り替わって表示され、存在しない番号の入力や直接入力(社員名を直接入力する人もいるため)でもエラーが出ないよう「On Error Resume Next」を追加しております。
Bシートに社員情報が記載されており、BシートのA列が社員番号、C列に社員名の一覧があります。
下記のコードの状態で、AシートのC列の複数行に貼り付け、もしくは複数行の値を一気に削除(Deleteを押す)すると、両者とも1個目のセルのみがN/Aとなってしまいます。
1個目のセルにも問題なく張り付け、および削除が成功するコードを教えて頂けますでしょうか。
<現在のAシートのコード>
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 3 Then
With Cells(Target.Row, Target.Column)
.Value = WorksheetFunction.VLookup(Target.Cells, Worksheets("B").Range("A2:B5001"), 2, False)
End With
End If
On Error GoTo 0
End Sub
No.2ベストアンサー
- 回答日時:
こんにちは
Changeイベントで渡されるTargetはセル範囲です。
>AシートのC列の複数行に貼り付け、もしくは複数行の値を一気に
>削除(Deleteを押す)すると、両者とも1個目のセルのみが
>N/Aとなってしまいます。
ご提示のコードは単独セルが変更された場合を想定していて、複数セルの変更に対応していないため、セル範囲を渡された場合には処理できません。
複数行に貼り付けた場合に、1行目が#N/Aになるだけで、2行目以降は処理されていないものと想像します。
あるいは、B2:C5のようなセル範囲にコピペした場合には、何も処理されないことになっていませんか?
>1個目のセルにも問題なく張り付け、および削除が成功する
>コードを教えて頂けますでしょうか。
1個目が処理できるようにするだけでは、本当のご要望に応えていないのではないかと思います。
変更のあった全部のセルに対応なさりたいのでしょうから、コードを複数セルに対応可能なように修正する必要があります。
簡単な方法の一例として、Targetの範囲内のセルに対してループ処理をすれば良いです。
ご質問文からは「一覧表にない値を入力した場合にどうするのか」が不明ですが、その場合には「何もしない」と仮定してもよいのなら、以下ご参考までに。
(現実的には、A列になければ、B列を検索して同じものがなければ「該当無し」などの表示にした方が良いのかも知れませんけれど・・)
Private Sub Worksheet_ChangeF(ByVal Target As Range)
Dim c, r
Set r = Worksheets("B").Range("A2:B5001")
Application.EnableEvents = False
For Each c In Target.Cells
If c.Column = 3 And c.Value <> "" Then
If Not r.Columns(1).Find(c.Value, , xlValues, xlWhole) Is Nothing Then
c.Value = WorksheetFunction.VLookup(c.Value, r, 2, False)
End If
End If
Next c
Application.EnableEvents = True
End Sub
No.3
- 回答日時:
本来作業以外の操作がC列に対して行なわれた場合を
排除する必要があります。
Targetのセル数が1以外は抜ける処理を入れましょう。
No.1
- 回答日時:
("A2:B5001"), 2, False)が相対アドレス指定になってるからでは?
絶対アドレスにすれば良いと思います。
("A2:B5001") → ("$A$2:$B$5001")
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) VBAで重複した値のセルに色付けをしたい 1 2022/11/02 16:12
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
-
4
エクセルVBAのDeleteキーによるエラー
Excel(エクセル)
-
5
すでにコピーした情報を貼り付けたらイベントを発生
PowerPoint(パワーポイント)
-
6
エクセルVBA/イベント発生でコピペ不能はなぜ?
Excel(エクセル)
-
7
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
8
エクセルVBA セルの入力後「Delete」キーを押したか判断するプログラム
Excel(エクセル)
-
9
ExcelのVBAでエラー13が出てしまいます。(泣き)
Excel(エクセル)
-
10
worksheet_changeがループする
PowerPoint(パワーポイント)
-
11
エクセル VBA Worksheet_Changeとコピー&ペースト
Excel(エクセル)
-
12
複数処理 Worksheet_Change(ByVal Target As Range)
Visual Basic(VBA)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
15
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
16
【VBA】Worksheet_changeイベントで特定のキーが押されたときだけ無効にしたい
Visual Basic(VBA)
-
17
Worksheet.Change イベントを他のシートにも反映させる方法?
Visual Basic(VBA)
-
18
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
19
教えて For Each R In Target
Excel(エクセル)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2013で切り取り禁止
-
Count Ifのセルの範囲指定に変...
-
楽天RSSからエクセルVBAを使用...
-
Excel VBA オートフィルターで...
-
複数シートの複数列に入力され...
-
マクロ実行後に別シートの残像...
-
Excelマクロで不要な行を繰り返...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
VBAで変数の数/変数名を動的に...
-
excel vbaで教えてください。(...
-
マクロの「SaveAs」でエラーが...
-
別シートから年齢別の件数をカ...
-
VBA別シートの最終行の次行へ転...
-
Changeイベントで複数セルへの...
-
【Excel】列と行の最後尾にジャ...
-
B列の最終行までA列をオート...
-
エクセルVBA intersect colu...
-
EXCEL VBA 文中の書式ごと複写...
-
【VBA】「同じ文字を含むセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
マクロ実行後に別シートの残像...
-
VBA別シートの最終行の次行へ転...
-
Changeイベントで複数セルへの...
-
Count Ifのセルの範囲指定に変...
-
ExcelのVBマクロを、バックグラ...
-
VBA 実行時エラー1004 rangeメ...
-
VBAで変数の数/変数名を動的に...
-
VBA 別ブックからの転記の高速...
-
Excel VBA オートフィルターで...
-
100万件越えCSVから条件を満た...
-
複数シートの複数列に入力され...
-
【VBA】特定の条件でセルをコピー
-
Excel2013で切り取り禁止
-
楽天RSSからエクセルVBAを使用...
-
アクセスからエクセルへ出力時...
-
グラフマクロで系列を変数にす...
-
FindNextがうまくいかない
おすすめ情報