Jak VBA aktualizuje wartość komórki na podstawie innej komórki

0

Przejrzałem wymianę stosów i nie widziałem dokładnie tego, czego szukam. Mam obszerną listę niektórych elementów, które wymagają stałej kalibracji w różnych datach i odstępach czasu, a to, co staram się zrobić, to zrobić VBA / Makro, dzięki czemu będę mógł zaktualizować dowolną datę kalibracji konkretnego przedmiotu bez konieczności patrzenia na każdą z nich indywidualny wpis lub użycie = WYSZUKAJ.PIONOWO (). jak dotąd nie mam jeszcze nic solidnego, co mogę nazwać programem, ale to, co sobie wyobrażałem, to zapisanie w komórce identyfikatora przedmiotu, w innej komórce data nowej kalibracji i przycisk obok nich, więc szukam identyfikatora #, przesuwa o jedną kolumnę w prawo i zastępuje tekst w komórce nową datą. Wystarczająco prosty do wyjaśnienia, ale biorąc pod uwagę fakt, że cztery godziny temu zacząłem uczyć się o VBA, okazuje się to wyzwaniem. Do tej pory bawiłem się jakimś kodem bezskutecznie:

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

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

Dostarczę więcej informacji lub kontekstu, jeśli ktoś tego potrzebuje!

WestWindsDemon
źródło

Odpowiedzi:

0

Używając cytatów w formule, powinieneś je podwoić:

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

To sprawi, że będziesz dość blisko. Możesz dostosować to, aby dopasować swoje dane. Komentowane komendy MsgBox można usunąć, ale są przydatne do debugowania.

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

Jeśli chcesz przypisać makro do przycisku, umieść najpierw kod w nowym module, a następnie wykonaj przycisk i przypisz do niego makro SetCalDate (), jak wyjaśniono na tej stronie pomocy . Powodzenia.

Bandersnatch
źródło