VBA-Aktualisierung eines Zellenwerts basierend auf einer anderen Zelle

0

Ich habe überall Stack-Austausch gesucht und habe nicht genau gesehen, wonach ich suche. Ich habe eine umfangreiche Liste einiger Elemente, die zu verschiedenen Zeitpunkten und Intervallen ständig kalibriert werden müssen, und ich versuche, ein VBA / Makro zu erstellen, sodass ich das Kalibrierungsdatum eines bestimmten Elements aktualisieren kann, ohne dass ich jedes betrachten muss Einzeleintrag oder Verwendung von = VLOOKUP (). Bisher habe ich noch nichts festes, ich kann ein Programm noch nicht aufrufen, aber ich hatte mir vorgestellt, in einer Zelle die ID-Nummer des Artikels schreiben, in einer anderen Zelle das neue Kalibrierungsdatum und eine Schaltfläche neben ihnen, so dass nach der ID gesucht wird #, verschiebt eine Spalte nach rechts und ersetzt den Text in der Zelle durch das neue Datum. Einfach zu erklären, aber angesichts der Tatsache, dass ich gerade vor vier Stunden mit VBA angefangen habe, ist es eine Herausforderung. Bisher habe ich mit etwas Code ohne Erfolg gespielt:

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

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

Ich werde mehr Informationen oder Kontext zur Verfügung stellen, wenn jemand es braucht!

WestWindsDemon
quelle

Antworten:

0

Wenn Sie Anführungszeichen in einer Formel verwenden, sollten Sie diese doppelt verwenden:

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

Das wird dich ziemlich nahe bringen. Sie können dies an Ihre Daten anpassen. Die auskommentierten MsgBox-Befehle können gelöscht werden, sind aber für das Debuggen hilfreich.

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

Wenn Sie das Makro einer Schaltfläche zuweisen möchten, fügen Sie den Code zuerst in ein neues Modul ein, erstellen Sie dann eine Schaltfläche und weisen Sie dem Makro das SetCalDate () - Makro zu auf dieser Hilfeseite . Viel Glück.

Bandersnatch
quelle