お世話になります。
下記マクロに「シート2の最終行に値を記入する」機能を付与するとしたら、どういった構文を追加したら良いでしょうか。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("シート2")
Set wS3 = Worksheets("シート3")
If Target.Count > 1 Or Target = "" Then Exit Sub
Set c = wS3.Range("B:B").Find(what:=Target.Address(False, False), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
wS2.Range(c.Offset(, 2)) = Target
End If
End Sub
No.4ベストアンサー
- 回答日時:
No.2・3です。
もう一度「お礼欄」をじっくり読み返してみました。
どうしても質問にあるコードの
>c.Offset(, 2)
が引っかかるのですが、
>wS2.Range(c.Offset(, 2)) = Target
の行が
>wS2.Range(c).End(xlDown).Offset(1) = Target
というコトでしょうか?
これであれば、シート3のB列セル番地を取得し、シート2のそのセルから下へ検索していき
データがある最終行の下のセルに「Target」が表示されます。
※ 対象セルもしくはその1行下にデータがない場合はエラーになりますので、
エラー処理のためにもう一つ変数を追加し
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, r As Range
Dim wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("シート2")
Set wS3 = Worksheets("シート3")
With Target
If .Count > 1 Or .Value = "" Then Exit Sub
Set c = wS3.Range("B:B").Find(what:=.Address(False, False), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Set r = wS2.Range(c)
If r = "" Then
r = .Value
ElseIf r.Offset(1) = "" Then
r.Offset(1) = .Value
Else
r.End(xlDown).Offset(1) = .Value
End If
End If
End With
End Sub
こんな感じをお望みだったのでしょうか?m(_ _)m
No.3
- 回答日時:
No.2です。
お礼欄を読んでもいまいち理解できないのですが、
>シート2のA1が記入されていたらA2に記入されるようにしたいと考えております。
すなわちシート3のB列該当セル番地(セルのアドレス)を取得し、
シート2のそのセル番地の下のセルに「Target」を表示したい!というコトですかね?
そうであれば
>wS2.Range(c.Offset(, 2)) = Target
の行を
>wS2.Range(c).Offset(1) = Target
としてみたらどうなりますか?m(_ _)m
No.2
- 回答日時:
こんにちは!
>シート2の最終行に・・・
とはどの列の最終行になるのでしょうか?
お示しのコードの
>wS2.Range(c.Offset(, 2)) = Target
ではエラーになると思います。
>wS2.Range(c).Offset(, 2) = Target
にすると「シート3」のB列に「Target」のアドレスが存在する場合
「シート2」のそのセルの2つ右隣に「Target」の値が表示されますが、
これでは質問内容とは違いますよね?
※ 直接の回答でなくてごめんなさい。m(_ _)m
回答ありがとうございます。
質問内容が理解しにくくて申し訳ありませんm(__)m
現在、シート1を原本とし、原本の項目を記載すると、シート3で設定したセルの番地のとおりにシート2に記載され、リスト化されるといったものを、質問内容のコードを使用し作成です。(説明が難しくて申し訳ありません。)
しかしながら、質問内容に記載したコードですとシート3で設定したコードの場所に繰り返し記入されるため、シート2のA1が記入されていたらA2に記入されるようにしたいと考えております。
No.1
- 回答日時:
変数 = ws2.Cells(Rows.Count, 行).End(xlUp).Row + 1
ws2.Cells(変数, 行) = 値
これでいけると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルで条件に一致したセル...
-
マクロ 新しいシートにデータ...
-
複数シートの同じセル内容を1シ...
-
Excelシートの保護時にデータの...
-
ExcelでTODAY関数を更新させな...
-
別シートのセルを絶対参照にする
-
EXCELマクロで、シート間でのコ...
-
Excelでスクロールすると文字が...
-
シート参照で変数を使いたい(EX...
-
エクセルでシート保護をかける...
-
エクセルで、加筆修正したセル...
-
Excelのファイル容量が減らない...
-
エクセルで20万行あるシート...
-
VBA Excel セル残像が残る
-
エクセルで串刺し計算ができない。
-
エクセルで別シートからの最大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルで1月0日と表示される!!
-
エクセルで条件に一致したセル...
-
Rangeメソッドは失敗しました。...
-
別シートのセルを絶対参照にする
-
シート参照で変数を使いたい(EX...
-
Excelシートの保護時にデータの...
-
複数シートの同じセル内容を1シ...
-
エクセルで複写のように自動入...
-
エクセルの文字
-
Excelでスクロールすると文字が...
-
(Excel)あるセルに文字を入力...
-
Excelのファイル容量が減らない...
-
マクロ 新しいシートにデータ...
-
エクセルで別シートからの最大...
-
ExcelでTODAY関数を更新させな...
-
エクセルのセルに、マウスで選...
-
EXCELマクロで、シート間でのコ...
おすすめ情報