В настоящее время я работаю над проектом и намочу ноги в VBA. Сейчас мне нужно найти значение в определенной таблице c на основе имени сотрудника и изменить это значение. Например, в таблице январь:
Name;BirthDate;BSN;Salary
P. Decker;19-8-1988;123;$10.000
J. Jackson;20-6-1988;456;$12.000
T. Roberts;18-2-1975;789;$15.000
Я хотел бы изменить зарплату Дж. Джексона.
У меня возникли проблемы с поиском решения для этого. Я нашел несколько способов изменить значение в ячейке, например, с помощью
Sub GetValueFromTable()
myValue_1 = InputBox("Fill in name", "Name Employee")
myValue_2 = InputBox("What do you want to change", "What?")
Cells(1, 3) = myValue_1
End Sub
Но таким образом я не могу ссылаться на таблицу или ставить имена таблиц или что-нибудь подобное, в этом случае я мог бы использовать myValue_2 как " Зарплата ", но формулы, которые я нашел, работают только с числами, а не со ссылками на ячейки.
Может ли кто-нибудь помочь мне здесь, чтобы я мог заставить это работать?
Спасибо!
РЕДАКТИРОВАТЬ:
Хорошо, после нескольких часов бездействия, я прямо сейчас получил это:
Sub Testnumberounodostreina()
Dim tbl As ListObject
Dim rng1 As Range
Dim cel1 As Range
Dim col As Long
Dim row As Long
Set tbl = ActiveSheet.ListObjects("January")
Set rng1 = tbl.HeaderRowRange
Set rng2 = tbl.DataBodyRange
Set cel1 = rng1.Find(What:="Salary", LookAt:=xlWhole)
Set cel2 = rng2.Find(What:="J. Jackson", LookAt:=xlWhole)
If cel1 Is Nothing Then
Beep
Else
cel1.EntireColumn.Hidden = True
cel2.EntireColumn.Hidden = True
' --- or ----
col = cel1.Column
row = cell.row
Cells(row, col).Value = "15,000"
End If
End Sub
Запуск этого скрипта дает мне следующую ошибку:
«Ошибка времени выполнения« 424 »: требуется объект.»
Предполагается, что эта формула получит значение заголовка столбца и строки на основе «Зарплата» и «Дж. Джексон», а затем он должен изменить значение в этой ячейке на «15.000».
То, что этот код делает прямо сейчас, - это найти заголовок столбца на основе «Зарплата» и вернуть значение этого столбца. То, что он не делает правильно, это найти номер строки, где находится "Дж. Джексон". Вот почему я получаю эту ошибку.
Может ли кто-нибудь помочь мне получить значение номера строки, где "J. Jackson"?
Спасибо
РЕДАКТИРОВАТЬ:
Видимо были некоторые опечатки, теперь это работает!
код:
Sub Testnumberounodostreina()
Dim tbl As ListObject
Dim rng1 As Range
Dim cel1 As Range
Dim cel2 As Range
Dim col As Long
Dim row As Long
Set tbl = ActiveSheet.ListObjects("January")
Set rng1 = tbl.HeaderRowRange
Set rng2 = tbl.DataBodyRange
Set cel1 = rng1.Find(What:="Salary", LookAt:=xlWhole)
Set cel2 = rng2.Find(What:="J. Jackson", LookAt:=xlWhole)
If cel1 Is Nothing Then
Beep
Else
cel1.EntireColumn.Hidden = True
cel2.EntireColumn.Hidden = True
' --- or ----
col = cel1.Column
row = cel2.row
Cells(row, col).Value = "25,000"
End If
End Sub