0

以下は私がこれまでに持っているコードです。私は次のことをしようとしています:

「ICT番号」をワークシートの名前と比較し、そのワークシート名にICT番号が含まれている場合、それが他の文字列値と混在していても、そのワークシートの特定のセルを見て、その値を比較したいチェックリストワークシートのセルとセル。

これらの値が同じ場合、その行の対応するセルに、2 つのソースが一致したことを示すメッセージを表示したいと考えています。

次に、これをチェックリスト ワークシートのすべての行とワークブックのすべてのワークシートに対してループさせたいと考えています。

Dim ICT_Number As Range
Dim statmentdata As Range
Dim checklistdata As Range
Dim Worksheet As Variant
Dim reconcile As Range

For Each cell In Range("d6:d236")

Set ICT_Number = ActiveCell
Set statementdata = Worksheets("m0017 v p0903").Range("H2016")
Set checklistdata = ActiveCell.Offset(0, 5)
Set currsheet = Worksheets("m0017 v p0903")
Set reconcile = ActiveCell.Offset(0, 11)

If InStr(1, cell, ICT_Number, 1) Then
    If statmentdata = checklistdata Then
        reconclie.Value = "this line reconiles"
    Else
        reconcile.Value = "this line does not reconclie"
    End If
  Next cell
End Sub
4

1 に答える 1

0

コードにいくつかの問題があります。

変数に保護された(またはあいまいな)名前を使用しないでください。

しないでください:

Dim Worksheet As Variant

より良いこと:

Dim ws as Worksheet

Setオブジェクトを割り当てるときに使用します

これは機能しません:

currsheet = Worksheets("statement n0246 v ab119")

代わりに、次のようにします。

Set currsheet = Worksheets("statement n0246 v ab119")

あなたのコードはどのように見えるか

Sub test()

Dim ICT_Number As Range
Dim statmentdata As Range
Dim checklistdata As Range
Dim Worksheet As Variant
Dim reconcile As Range

Set ICT_Number = Worksheets("checklist").Range("D79")
Set statementdata = Worksheets("n0246 v ab119").Range("H2016")
Set checklistdata = Worksheets("checklist").Range("H79")
Set currsheet = Worksheets("statement n0246 v ab119")
Set reconcile = Worksheets("checklist").Range("N79")

If currsheet.Name = ICT_Number Then
    If statmentdata = checklistdata Then
        reconclie.Value = "this line reconiles"
    Else
        reconcile.Value = "this line does not reconclie"
    End If
End If
End Sub

何よりもまず

構文については、VBAチュートリアルをご覧ください。VBA :基本的な構文と例のチュートリアル

于 2011-12-29T14:00:32.093 に答える