dポイントプレゼントキャンペーン実施中!

VBAで、シート2で指定した数値とシート1の数値が合致したら、シート2に転記するマクロを作っているんですが、全然動きません。
詳しくは、こんな感じのVBAを組んでます。

もしシート2のL3=シート1の cells(X,i)の場合
シート2のcells(f,j)にシート1のcells(U,i)を代入する

Sub test()

Dim sh1 As Worksheet

Dim sh2 As Worksheet

Dim j As Integer

Set sh1 = ThisWorkbook.Worksheets("1")

Set sh2 = ThisWorkbook.Worksheets("2")

j = 1

For i = 5 To 300


If sh1.Cells(19, "i").Value = sh2.Range("L3").Value Then

sh2.Cells(6, "j").Value = sh1.Cells(16, "i").Value

j = j + 1


End If
Next i
End Sub

色々な参考書やネットなどで調べながら組んだマクロなんですが、知識が乏しいため、どこが間違えなのかわかりません。。

間違えの指摘や、上記ができるVBAプログラムを教えていただけると幸いです。

A 回答 (2件)

こんばんは!



ざっくりとしか見ていませんが・・・

>If sh1.Cells(19, "i").Value = sh2.Range("L3").Value Then
>sh2.Cells(6, "j").Value = sh1.Cells(16, "i").Value

の2行の「i」と「j」のダブルクォーテーションは不要なのでは?
これだと文字列になってしまいます。

それと
>Set sh1 = ThisWorkbook.Worksheets("1")
>Set sh2 = ThisWorkbook.Worksheets("2")

の「1」と「2」はシート名になっているのですよね?
シート見出しの一番左からSheet1・Sheet2となっていて
一番左側Sheetをsh1、2番目をsh2のようにしたいのであれば
こちらもダブルクォーテーションは不要です。m(_ _)m
    • good
    • 0
この回答へのお礼

できました!
回答ありがとうございます!!

お礼日時:2017/08/20 23:43

"(ダブルコーテション)で囲んだ中身は文字列になります。


iとjの変数がiとjという文字として認識されているため、予定と違う動きをしています。

エクセル 変数の使い方で検索すればいいですよ。
    • good
    • 0
この回答へのお礼

できました!
回答ありがとうございます!!

お礼日時:2017/08/20 23:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!