Назначить группу ячеек, определенных при выполнении, диапазону - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь назначить группу ячеек из двух рядов двух рабочих книг двум диапазонам.Эта информация используется для сравнения содержимого строк обеих книг по идентификатору .

Я пытался использовать операторы "with".

Dim aWorkbookBInfo() As Variant, aWorkbookAInfo() As Variant, rngWorkbookBToCompare As Range, rngWorkbookAToCompare As Range
Dim SumToCheck As Integer, FoundCell As Range, aCellValues() As Integer
ReDim aCellValues(LastSheetColumn - 1)
ReDim aWorkbookBInfo(LastSheetColumn - 1)
ReDim aWorkbookAInfo(LastSheetColumn - 1)
For i = 2 To LastSheetRow
    Set FoundCell = Workbooks(WorkbookA).Sheets(SheetNameFromArray).Range("A:A").Find(What:=Workbooks(WorkbookB).Sheets(SheetNameFromArray).Cells(i, 1).Value)
    If Not FoundCell Is Nothing Then
        aCellValues(0) = 1
        Workbooks(WorkbookB).Sheets(SheetNameFromArray).Cells(i, LastSheetColumn + 1).Value = FoundCell.Row
        With Workbooks(WorkbookB).Sheets(SheetNameFromArray)
            Set rngWorkbookBToCompare = Range(Cells(i, 2), Cells(i, LastSheetColumn))
        End With
        With Workbooks(WorkbookA).Sheets(SheetNameFromArray)
            Set rngWorkbookAToCompare = Range(Cells(FoundCell.Row, 2), Cells(FoundCell.Row, LastSheetColumn))
        End With
        aWorkbookBInfo = rngWorkbookBToCompare
        aWorkbookAInfo = rngWorkbookAToCompare
        For j = 1 To LastSheetColumn - 1
            If aWorkbookBInfo(1, j) = aWorkbookAInfo(1, j) Then
                aCellValues(j) = 1 
            Else
                aCellValues(j) = 0
            End If
        Next j
    Else
    End If
Next i 

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

То, что я пробовал, получает только информацию активной рабочей книги вместо обеих рабочих книг.

1 Ответ

0 голосов
/ 10 октября 2018

Используйте точку . перед Range или Cells ссылками, чтобы полностью квалифицировать Worksheet в блоке With...End With.

With Workbooks(WorkbookB).Sheets(SheetNameFromArray)
    Set rngWorkbookBToCompare = .Range(.Cells(i, 2), .Cells(i, LastSheetColumn))
End With

И снова:

With Workbooks(WorkbookA).Sheets(SheetNameFromArray)
    Set rngWorkbookAToCompare = .Range(.Cells(FoundCell.Row, 2), .Cells(FoundCell.Row, LastSheetColumn))
End With

Без периода With...End With не имеет никакого эффекта.ActiveSheet и ActiveWorkbook подразумеваются, поскольку вызовы Range и Cells не полностью квалифицированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...