[[20221127131822]] 『VBAコードを条件を変えて変更したいです』(やま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAコードを条件を変えて変更したいです』(やま)

以前、該当する商品の情報入力を別シートにも連動して反映させるマクロを
作成してもらいましたが、シート条件を変えて再作成できる方を探してます。

sheet1(WOあり)の内容をsheet2(全てのcase)に自動反映させたいです。 例えばsheet1のC列に入力された際にsheet2のC列にも反映させたいです。 この時sheet1のB列の文字とsheet2のB列の文字が一致しているものだけ、sheet2のC列に変更を反映させることが条件になります。

以前シート条件が、シート名Sheet1.2、列条件がA.B列のパターンで
VBAコードを作成してもらいましたが、下記の条件に変更して
再作成してもらえればと思ってます。
自分で色々変えてみましたが、上手く出来ませんでした。
よろしくお願い致します。

変更条件
シート名
Sheet1→WOあり
Sheet2→全てのcase


A列→B列
B列→C列

VGAコード

Sheet1モジュール------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim trng As Range, c As Range, r As Long
    Set trng = Intersect(Target, Range("B:B"))
    If Not trng Is Nothing Then
        With Worksheets("Sheet2")
            On Error Resume Next
            For Each c In trng
                r = WorksheetFunction.Match(c.Offset(, -1).Value, .Range("A:A"), 0)
                If Err.Number = 0 Then .Cells(r, 2).Value = c.Value
                Err.Clear
            Next
            On Error GoTo 0
        End With
    End If
End Sub

< 使用 Excel:unknown、使用 OS:unknown >


■1
>マクロを作成してもらいました
>自分で色々変えてみましたが、上手く出来ませんでした。
どのようなことを【色々変えてみた】のでしょうか?

マクロの改造をするならば、まずは元のコードを理解することが先決かと思います。
もとのコードはどこまで理解できているのでしょうか?
"質問"であれば、そのあたりの説明もされるとよいでしょう。

■2
>下記の条件に変更して再作成してもらえればと思ってます。
質問でなく作成依頼であるとすれば応じられる方にお任せしますが、以下の点をちゃんと考えれば十分に自力解決できそうな気がします。

 ・どのモジュールに記述するか
 ・ With Worksheets("Sheet2")がどうなればよいか
 ・ Intersect(Target, Range("B:B")) 及び c.Offset(, -1)がどの列を対象にしているか

"質問"ならばこの辺りをよく考えてみてはいかがでしょうか?

(もこな2) 2022/11/27(日) 16:13:59


もこな2さん

ご連絡ありがとうございます。
私はマクロの知識が全くありません。

元々作成してもらったコードで目的だったことを
Excelに実行することができました。
しかし、上記の様に指定の列やシート名に変更がある
シートの場合は反映させることができませんでした。
下記が私が素人なりに考え変更したコードになります。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim trng As Range, c As Range, r As Long
    Set trng = Intersect(Target, Range("C:C"))
    If Not trng Is Nothing Then
        With Worksheets("全てのcase")
            On Error Resume Next
            For Each c In trng
                r = WorksheetFunction.Match(c.Offset(, -1).Value, .Range("B:B"), 0)
                If Err.Number = 0 Then .Cells(r, 2).Value = c.Value
                Err.Clear
            Next
            On Error GoTo 0
        End With
    End If
End Sub

これで反映できない原因を今回質問しております。
宜しくお願い致します。
(やま) 2022/11/27(日) 16:34:02


 2022/11/27(日) 16:34:02 のコード

 >If Err.Number = 0 Then .Cells(r, 2).Value = c.Value

  If Err.Number = 0 Then .Cells(r, 3).Value = c.Value
                                   ~~~
 では?
(笑) 2022/11/28(月) 12:27:26

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.