Сравнение строки с именем рабочего листа и выполнение действия - PullRequest
0 голосов
/ 29 декабря 2011

Ниже приведен код, который у меня есть.Я пытаюсь сделать следующее:

Сравните «номер ICT» с именем рабочего листа, и если это имя рабочего листа содержит номер ICT, даже если оно смешано с другими строковыми значениями, тогда я хочупосмотрите на определенную ячейку в этом листе и сравните значение в этой ячейке с ячейкой в ​​моем листе контрольного списка.

Если эти значения совпадают, то я хочу, чтобы сообщение появилось в соответствующей ячейке нав этой строке говорится, что два источника согласованы.

Затем я хочу, чтобы это зациклилось для всех строк рабочего листа контрольного списка и всех рабочих листов в рабочей книге.

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

1 Ответ

0 голосов
/ 29 декабря 2011

У вас есть несколько проблем в вашем коде:

Не используйте защищенные (или неоднозначные) имена для ваших переменных.

Пожалуйста, НЕ ДЕЛАЙТЕ:

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 Tutorial, чтобы изучить синтаксис : VBA: учебник по базовому синтаксису и примерам

...