Я просмотрел весь обмен стека и не увидел, что именно ищу. У меня есть обширный список некоторых элементов, которые нуждаются в постоянной калибровке в разные даты и интервалы, и я пытаюсь сделать VBA/Macro, чтобы я мог обновить дату калибровки любого конкретного элемента, не обращая внимания на каждый индивидуальная запись или использование = VLOOKUP(). пока у меня нет ничего твердого, я могу назвать программу, но то, что я предполагал, было в ячейке написать идентификатор элемента #, в другой ячейке новую дату истечения калибровки и иметь кнопку рядом с ними, чтобы искать идентификатор #, перемещает один столбец вправо и заменяет текст в ячейке новой датой. Достаточно просто объяснить, но, учитывая тот факт, что я только начал изучать VBA четыре часа назад, это становится проблемой. До сих пор я играл с некоторым кодом безрезультатно:

range("a1").Formula = "=CELL("address", INDEX(H:J, MATCH(L11,H:H, 0),2))"

ActiveCell.FormulaR1C1 = "=INDEX(R[-5]C[-9], 3, 2, )"

Я предоставлю больше информации или контекста, если кому-то это нужно!

2 ответа2

0

При использовании кавычек внутри формулы вы должны удвоить их:

Range("A1").Formula = "=CELL(""address"", INDEX(H:J, MATCH(L11,H:H, 0),2))"
ActiveCell.FormulaR1C1 = "=INDEX(R[-5]C[-9], 3, 2, )"
0

Это приблизит вас. Вы можете настроить это, чтобы соответствовать вашим данным. Закомментированные команды MsgBox могут быть удалены, но удобны для отладки.

Sub SetCalDate()

    'Set up variables
    Dim ID, RowNum As Integer
    Dim NewCalDate As Date
    Dim IDNums As Range

    'Initialize variables
    ID = Range("A1").Value           'Assumes the ID to Find is in A1,
    NewCalDate = Range("B1").Value   'and the NewCalDate is in B1.
    'MsgBox NewCalDate
    Set IDNums = Range("C1:C10")     'This is the range of ID's to be searched.
    'You might need something like Set IDNums = Worksheets("Sheet3").Range("C1:C10")
    'if the ID numbers are on a different sheet.

    'Find the ID in IDNums
    RowNum = Application.WorksheetFunction.Match(ID, IDNums, 0)
    'MsgBox RowNum
    Range("D" & RowNum) = NewCalDate    'Assumes the CalDates are in column D.

End Sub

Если вы хотите назначить макрос кнопке, сначала поместите код в новый модуль, затем создайте кнопку и назначьте ей макрос SetCalDate(), как описано на этой странице справки. Удачи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .