すぐにこのエラーを削除し、今後のエラーを避けるためにあなたのコードに行きましょう。そのほとんどはShai Radoのコメントでカバーされています。
Dim i, j As Integer
これは、バリアントとしてi
を宣言しています。あなたは、このような具体的にする必要があります。
Dim i As Integer, j As Integer
次のコードは、何もしないされ、削除することができます。 ActiveSheet
オブジェクトを使用する場合は、ワークシートをActivate
にする必要があります。これは非常に落胆しています。
Worksheets("sheet1").Activate
Worksheets("sheet2").Activate
例外は、Excelを使用すると、マクロが実行された後で、サブと呼ばれ、そこから1への別のシートをアクティブにしたい場合は、その後、あなたはサブの終わりにこれらの.Activate
のステートメントのいずれかを置くことができています
Worksheets("sheet1").Cells(i, 1).inerior.Color = vbRed
ここにタイプミスがあります。 inerior
ではなくInterior
です。通常、これらのエラーは、プロパティが期待どおりに大文字に変換されていないことがわかるため、確認できます。
あなたはこれらのシートは中であるWorkbook
指定していません。Sheet1
とSheet2
は、デフォルトの名前であるため、あなたのサブを実行しているときに、2つの以上のワークブックを開いている場合は、特に危険です。 Excelが混乱し、誤ったブックにコードを実行することがあります。ここではこれを回避するいくつかの方法があります:
- 変更
Worksheets("Sheet1").Cells()
ThisWorkbook.Worksheets("Sheet1").Cells()
にシートオブジェクト名を使用します。これらは変更していない場合は、単にSheet1
とSheet2
などです。例えば。 Sheet1.Cells()
は、だからここに私はまた、あなたが
それが何をするか、というよりも
main
を説明し、より良いものにあなたのサブに名前を付けることを助言するあなたの最終的なコード
Sub main()
Dim i as Integer, j As Integer
For i = 1 To 200
For j = 1 To 200
If Sheet1.Cells(i, 1) = Sheet2.Cells(j, 1) Then
Sheet1.Cells(i, 1).Interior.Color = vbRed
End If
Next j
Next i
'Sheet2.Activate
End Sub
です。
あなたは** Typo **を持っています、それは 'Worksheets(" sheet1 ")でなければなりません。セル(i、1).Interior.Color = vbRed'で、' inerior'ではありません。 –
'Dim i As Integer、j As Integer'、そうでなければ' i'が 'As Variant'として定義されます。また、Activateから遠ざかる方がよいでしょう。 –
ドットの後ろの小文字は、通常、.ineriorが存在しないという記号です。 http://stackoverflow.com/questions/21399691/excel-vba-highlight-duplicates-in-active-column – Slai