2017-04-13 27 views
1

列のクロスシートの比較を行うときに、「オブジェクトはこのメソッドをサポートしていません」というエラーがあります。 。シート2の列AとBの両方の場合シートで1試合の列AとBの両方、それはシートに3複数の条件

enter image description here

+2

コードのスクリーンショットを投稿しないでください。コードを質問に貼り付けて強調表示し、 '{}'ボタンを使用してフォーマットします。 'a = bとc = d Then'を使う必要があります。 '&'はVBAの連結演算子です。 –

答えて

0

を一致が表示されます、あなたのコード内の多くの問題がありました。将来、実際のコードを掲載してください(スクリーンショットではありません)。

  1. if文で "And" vs "&"を気にしてください。
  2. ".value"ではなく、 ".values"があなたのvarsにあります。
  3. セルで作業しているため、「Dim as string」と表示されます。
  4. "ワークシート" 「ワークシート」ではありません。
  5. 私はあなたがこれらのための "セット"が必要とは思わない。 (間違っている可能性があります)

以下のコードを試してみてください。 「マッチ」シートに書き込む行を変更する必要があるかもしれません。

Sub find() 

Dim a As String 
Dim b As String 
Dim c As String 
Dim d As String 

a = Worksheets("sheet1").Range("a1").Value 
b = Worksheets("sheet2").Range("a1").Value 
c = Worksheets("sheet1").Range("b1").Value 
d = Worksheets("sheet2").Range("b1").Value 

If a = b And c = d Then 

Worksheets("match").Range("A65536").End(xlUp).Offset(1, 0).Value = c 
Worksheets("match").Range("A65536").End(xlUp).Offset(0, 1).Value = c 

End If 
End Sub 
+1

変数a〜dは数値です。テキストであることが分かっていない限り、バリアントとして宣言することをお勧めします。 「Set」キーワードは、範囲などのオブジェクトとともに使用する必要があります。 'Set a = Worksheets(" sheet1 ")。Range(" a1 ")。Value'は' .Value'がオブジェクトではないため、 "Object required"というエラーが発生します。 Set a = Worksheets( "sheet1")。Range( "a1")は、 'a'が元々の範囲として宣言されていれば、範囲オブジェクトを変数' a'に代入します。 Valueプロパティがレンジオブジェクトのデフォルトであるため、 'a = b'と両方が範囲である場合を比較すると、おそらく動作しますが、構文がひどく悪いです。 – Variatus

+0

「c.Offset(0、2).Value」を使ったOPの割り当てが機能するように 'c'を' Range'オブジェクトとして残す必要があります(あなたのコードは 'c'を使って最終的な割り当てを設定します) – YowE3K

+0

グレートポイント@バラタス。私は私の[範囲オブジェクト](http://www.excel-easy.com/vba/range-object.html)を読んでいるのですが、しばらくしています。 – primohacker