Cómo actualizar VBA un valor de celda basado en otra celda

0

He examinado todo el intercambio de pila y no he visto exactamente lo que estoy buscando. Tengo una lista extensa de algunos elementos que necesitan calibración constante en diferentes fechas e intervalos, y lo que estoy tratando de hacer es hacer un VBA / Macro para poder actualizar la fecha de calibración de cualquier elemento específico sin tener que mirar cada uno entrada individual o usando = BUSCARV (). hasta ahora no tengo nada sólido, todavía puedo llamar a un programa, pero lo que había imaginado era que en una celda escriba el número de ID del elemento, en otra celda la nueva fecha de expiración de calibración y tenga un botón al lado para buscar la ID #, mueve una columna a la derecha y reemplaza el texto en la celda con la nueva fecha. Suficientemente simple de explicar, pero dado el hecho de que recién comencé a aprender sobre VBA hace cuatro horas, está resultando ser un desafío. Hasta ahora

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

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

¡Proporcionaré más información o contexto si alguien lo necesita!

WestWindsDemon
fuente

Respuestas:

0

Cuando use comillas dentro de una fórmula, debe duplicarlas:

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

Esto te acercará bastante. Puede ajustar esto para que se ajuste a sus datos. Los comandos MsgBox comentados se pueden eliminar, pero son útiles para la depuración.

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

Si desea asignar la macro a un botón, coloque primero el código en un nuevo módulo, luego haga un botón y asígnele la macro SetCalDate () como se explica en esta página de ayuda . Buena suerte.

Bandersnatch
fuente