Раскрытие информации: Я довольно неопытным в кодировании большинства видов, но есть разумное понимание логики позади него, и довольно часто просто нужен небольшой толчок с получением синтаксиса Праворежущий т.д.VBA Excel - компилировать Object Error Обязательный
Я отправил тот же код и раньше, но с другой проблемой и не обнаружил эту проблему, так что я решил, что лучше создать новый вопрос для него
Цель: Что я пытаюсь сделать, это создать таблица, в которой в верхней строке находится список последовательных да тес. В первых нескольких столбцах приведены данные для счетов и т. Д. Я хочу, чтобы мой макрос делал, это посмотреть сумму счета, дату начала и конца и частоту счета (еженедельно/ежемесячно и т. Д.), А затем заполнить ячейки в эта же строка в столбцах дат, в которые должен быть выставлен счет. Я провел последний день с этим кодом, и я был очень доволен этим, пока не пошел, чтобы запустить его. Я уже избавился от нескольких ошибок, когда я использовал переменную. Значение, которое, по-видимому, не существует, и я испортил синтаксис для ячеек (строка, столбец).
Проблема, что я иду против теперь Compile Error: Object Обязательный на этой линии:
Set dateAddress = Range("J1:AAI1").Find(currentDate, LookIn:=xlValues).Address
'find the current date within the range of dates in row 1
Что эта линия должна делать это поиск по всем датам в первом ряду для это 'currentDate', а затем сохранить это как dateAddress, чтобы затем я мог использовать dateAddress.Column в следующей строке кода вместе с currentRow, чтобы найти нужную ячейку, которая должна быть заполнена суммой счета.
Я достаточно ясно? Мой код ниже.
Мой код:
Private Sub CommandButton1_Click()
Dim currentDate As Date
Dim currentRow As Integer
Dim repeatuntilDate As Date
Dim repeatuntilRow As Integer
Dim dateAddress As Date
currentRow = 3 'First row of entries
repeatuntilRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'Last row of entries
While currentRow < repeatuntilRow 'Loop from first row until last row of entries
currentDate = Cells(currentRow, "G").Value 'Set Start Date
repeatuntilDate = Cells(currentRow, "H").Value 'Set End Date
While currentDate <= repeatuntilDate 'Loop from Start Date until End Date
Set dateAddress = Range("J1:AAI1").Find(currentDate, LookIn:=xlValues).Address 'find the current date within the range of dates in row 1
Cells("dateAddress.Column,currentRow").Value = Cells("D,currentRow").Value 'Populate cell with amount
'Increment the currentDate by the chosen frequency
If Cells(currentRow, "E").Value = "Weekly" Then
currentDate = DateAdd("ww", 1, currentDate)
ElseIf Cells(currentRow, "E").Value = "Fortnightly" Then
currentDate = DateAdd("ww", 2, currentDate)
ElseIf Cells(currentRow, "E").Value = "Monthly" Then
currentDate = DateAdd("m", 1, currentDate)
ElseIf Cells(currentRow, "E").Value = "Quarterly" Then
currentDate = DateAdd("q", 1, currentDatee)
ElseIf Cells(currentRow, "E").Value = "6 Monthly" Then
currentDate = DateAdd("m", 6, currentDate)
ElseIf Cells(currentRow, "E").Value = "Annually" Then
currentDate = DateAdd("y", 1, currentDate)
' ElseIf Cells(currentRow,"E").Value = "Once off" Then
' Exit While
End If
Wend
currentRow = currentRow + 1 'Once row is complete, increment to next row down
Wend
End Sub
Спасибо simpLE MAn. Оказывается, было несколько вещей, которые я делал неправильно. мой окончательный код (который работает) теперь: 'С Range ("J1: AAI1") Set lastDate = .Cells (.Cells.Count)«Настройка приближающейся поиск начать в lastDate End С Set dateRange = Range ("J1: AAI1"). Найти (что: = currentDate, After: = lastDate) ' – Bzmek