エクセルVBAについての質問です。
エクセルVBAについての質問です。
動作環境は
OS:WINDOWS XP
エクセル2003 です。
今、Book1.xlsというエクセルファイルがあります。
このファイルの中に、【sheet1】,【sheet2】,【sheet3】の3つのシートが存在しています。
【sheet1】および【sheet2】には、A列=ユニーク番号、B列=データ1、C列=データ2・・・・n列=データnの値が約1500行(各行で、データの値は異なります。)入っています。
この【sheet1】と【sheet2】のデータの内容を照合して【sheet3】にその結果を反映(TRUEまたはFALSE)します。
仮に【sheet3】のあるセル(仮にD3)の値がTRUEとなったら、【sheet1】のセル(D3)の値を【sheet3】のセル(D3)に代入する。
逆に【sheet3】のあるセルの値がFALSEとなったら、そのセルはFLASEのままにする。プログラムは以下の様にしたのですが、全てを処理するまでに相当時間がかかっています。
VBAのプログラムは今回初めて書いたので、プログラムが悪いのか、プログラムの思想が悪いのかがわかりません。
どなたかご教授していただけませんか?多分、コードの書き方もキレイではないと思います(悲)
Private Sub データ照合ボタン_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Long
Dim area As Range
Dim A As Variant
Dim WrkRange As String
'----シート(1)とシート(2)の各セルの値を比較----
With Sheets("sheet1")
WrkRow = .Cells(Rows.Count, 3).End(xlUp).Row
End With
Sheets("sheet3").Select
For i = 12 To WrkRow
WrkRange = Range("C" & i).Select
ActiveCell.FormulaR1C1 = "=EXACT('sheet1'!RC,'sheet2'!RC)"
WrkRange = Range("D" & i).Select
ActiveCell.FormulaR1C1 = "=EXACT('sheet1'!RC,'sheet2'!RC)"
'・
'・
'・
Next i
A = i - 1
Sheets("sheet1").Select
For i = 12 To A
WrkRange = Range("C" & i).Select
Selection.Copy
Range("C" & i).PasteSpecial xlPasteValues
Sheets("sheet3").Select
If Range("C" & i) = True Then
Sheets("sheet1").Select
Range("C" & i).Copy
Sheets("sheet3").Select
Range("C" & i).Select
ActiveSheet.Paste
Else:
End If
Next i
A = i - 1
Sheets("sheet1").Select
For i = 12 To A
WrkRange = Range("D" & i).Select
Selection.Copy
Range("D" & i).PasteSpecial xlPasteValues
Sheets("sheet3").Select
If Range("D" & i) = True Then
Sheets("sheet1").Select
Range("D" & i).Copy
Sheets("sheet3").Select
Range("D" & i).Select
ActiveSheet.Paste
Else:
End If
Next i
'・
'・
'・
End Sub