-1

Поэтому, основываясь на исследованиях, это может быть невозможно без использования кода VBA, но, тем не менее, я чувствую, что стоит спросить. Я хочу, чтобы пользователь мог вводить данные в ячейку только тогда и только тогда, когда предшествующее смежное значение является конкретным значением.

Например, в A1 есть выпадающий список со следующими значениями; Staff , Student , Manager , Board . Если пользователь выбирает Staff , Student , Manager в A1 , то значение в B1 автоматически генерируется с использованием формулы UDF IF но если в A1 выбрано значение Board , пользователь может ввести конкретное числовое значение в B1 .

Поскольку пользовательская проверка должна возвращать значение ИСТИНА или ЛОЖЬ, не существует формулы, которую можно было бы ввести на вкладке формул окна проверки пользовательских данных .

Так что есть обходной путь, где формула может быть введена в ячейку, и тогда формула не будет существовать, если выбор в A1 - Board .

Надеюсь, это довольно понятно.

Если нет, может ли кто-нибудь помочь с некоторыми конструкциями кода, чтобы я мог преодолеть эту проблему? Поскольку мои знания VBA все еще очень любительские.

Таким образом, исходя из моих знаний, я бы поверил, что код такого типа будет применяться;

If Select Case Range(A1).Value = "Staff" Then B1 = Application.WorksheetFunction. (Since a Match function is employed) ElseIf Select Case Range(A1).Value = "Student" Then B1 = Application.WorksheetFunction. ElseIf Select Case Range(A1).Value = "Manager" Then B1 = Application.WorksheetFunction. ElseIf Select Case Range(A1).Value = "Board" Then (My knowledge fails me here) Else B1 ="" End If

Если возможно, я не хочу использовать InputBox

Благодарю за ваш ответ.

1 ответ1

-1

Если я что-то не упустил, UDF написан на VBA, так что у вас уже есть код в вашей книге.

Кроме того, я предполагаю, что ваша рабочая книга заблокирована, чтобы люди не могли вводить данные в ячейки, к которым они не должны.

Исходя из этих предположений и немного очистив свой псевдокод, измените свой UDF с помощью нескольких дополнительных строк кода:

Dim refCell as Range
refCell = ThisWorkbook.Worksheets(mySheet).Range("A1")
Dim targetCell as Range
targetCell = ThisWorkbook.Worksheets(mySheet).Range("B1")
With refCell
  If .Value = "Staff" or .Value = "Manager" or .Value = "Board" then
    targetCell.Locked = True
    'Call your existing UDF code here to generate the value
  Else
    targetCell.Locked = False
  End If
End With

Это должно начать вас.

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