ここから本文です

VBAで一致したセルの行を代入したいです。

ton********さん

2014/3/2008:19:22

VBAで一致したセルの行を代入したいです。

シート1の複数セルにコードと数量を入力するセルを作りました。
以下のような感じです。
B C D
1xxx 10 20

入力後コマンドボタンを押すと、シート2の最終行へ
xxy 15 30
xxx 10 20
という感じに縦積みに並べて集約させるマクロを作りました。
ただ、一度を入力しても、数量の修正することがあり、今の方法だと修正してもシート2に同じコードが2つ出現してしまう事になります。
シート1のB列に入力したコードが、シート2のB列にある場合、ボタンを押したら最終行ではなく、そのB列の数量を上書きするようにしたいのです。
ご教授お願いいたします。

閲覧数:
725
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

ja7********さん

編集あり2014/3/2012:58:18

こんな感じで如何でしょうか。

転記するのは、1行だけなんでしょうか?
あと、「見出し」の行は、無いのでしょうか?

> そのB列の数量を上書きするようにしたいのです。

B列は、検索したコードですから、上書きするのは、C、D列ではありませんか。

取り敢えず、ボタンを配置したシートのB1:D1の値をSheet2に転記する場合です。
実情と違う場合は、それなりに修正してください。

ボタンの名前をCommandButton1とし、
ボタンを配置したシートのモジュールに記述します。
(シート名タブを右クリックして「コードの表示」で表示されたコードウィンドウに記述)
または、シートをデザインモードにしてCommandButton1をWクリックしたコードに
上書きします。

Private Sub CommandButton1_Click()
Dim FRng As Range
Dim Rw As Long
With Worksheets("Sheet2")
    If Range("B1").Value <> "" Then
        Set FRng = .Range("B:B").Find(Range("B1").Value, Lookat:=xlWhole)
        If FRng Is Nothing Then
            Rw = .Cells(Rows.Count, 2).End(xlUp).Row
            If .Cells(Rw, 2).Value <> "" Then Rw = Rw + 1
            .Cells(Rw, 2).Resize(, 3).Value = Range("B1:D1").Value
            MsgBox "転記完了しました。", vbInformation
        Else
            FRng.Offset(, 1).Resize(, 2).Value = Range("C1:D1").Value
            MsgBox "既存データに上書きしました。", vbInformation
        End If
    End If
End With
Set FRng = Nothing
End Sub

質問した人からのコメント

2014/3/22 11:27:05

やりたいことができました!言葉足らずな質問内容だったのに、ありがとうございました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tra********さん

2014/3/2009:56:04

フォームコントロールのボタンに関連付してください。

Sub ボタン1_Click()
Dim xRng As Range, i As Variant
Set xRng = Worksheets("Sheet1").Range("B1")
With Worksheets("Sheet2")
i = Application.Match(xRng.Value, .Columns(2), 0)
If Not IsNumeric(i) Then
i = .Cells(Rows.Count, 2).End(xlUp).Row + 1
End If
xRng.Resize(, 3).Copy .Cells(i, 2)
End With
End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる