Я настраиваю систему бухгалтерского учета с использованием excel-vba для автоматической отправки различных значений в журнале на конкретные счета, такие как бухгалтерская книга, бухгалтерский баланс, отчет о прибылях и убытках и т. Д. На основе категории или описания.
Это моя первая попытка автоматизировать эти учетные записи.
'' '' ''
Sub ListSpecificVals()
Dim Arr() As Variant
Dim datarange, cell As Range
Dim count As Long
Set datarange = Sheet5.Range("a17:f28")
ReDim Arr(1 To 12, 1 To 6)
count = Application.WorksheetFunction.CountIf(datarange, "abc")
MsgBox count
For i = 1 To count
For Each cell In datarange
If cell.Value = "abc" Then
cell.Offset(0, 1).Value = 33
For i = 1 To count
Arr(i, 1) = cell.Address
Next i
Debug.Print cell.Address + " = "
Debug.Print cell.Offset(0, 1).Value
End If
Next cell
For i = 1 To count
Sheet5.Cells(i + 16, 10).Value = Arr
Next i
End Sub
'' ''
При записи значений массива на лист, я ожидаю, что каждая ячейка в диапазоне результатов будет давать разные адреса для ячеек, содержащих «abc» в «datarange». Вместо этого в каждой ячейке диапазона результатов на рабочем листе записывается только последний cell.address в «datarange».
Опять же, когда я использую Debug.Print cell.Address + "=",
Debug.Print cell.Offset (0, 1). Значение, как показано в коде, непосредственные окна показывают результаты точно и точно так, как они должны появиться, но когда я использую Debug.Print Arr (i, 1) непосредственное окно не показывает никаких результатов.