Использование VBA для создания формулы, которая изменяется на основе отмеченных галочек

Я пытаюсь создать функцию, если в пользовательской форме отмечено количество флажков, тогда формула в ячейке A1 показывает другую формулу с функцией выбора.

Формула, которую я хочу отобразить, если выбраны все поля:

= Выбрать (RANDBETWEEN (1,4), А3, А4, А5, А6)

Если выбраны только определенные поля, например, выбраны ящики 1 и 3, то формула будет:

= Выбрать (RANDBETWEEN (1,4), А3, В1, А5, В1)

Где B1 является ссылкой на пустую ячейку. Следующая формула будет зависеть от значения этой ячейки.

В настоящее время подход, который я принимаю, – это сделать:

Dim a as range, b as range, c as range, d as range, 'set cell reference with data in if checkbox is selected, blank cell reference if checkbox not selected If checkbox1.value=TRUE then set a = range("A3") else set a = range("B1") end if 'this is repeated for all checkboxes 

Затем я хочу, чтобы формула в A1 была

= Выбрать (RANDBETWEEN (1,4), а, б, в, г)

где a, b, c, d – диапазон, который я определил в функциях IF. Вот где я застрял. Если я сделаю

  [A1]="=choose(randbetween(1,4),a,b,c,d)" 

Тогда формула не подбирает значения

Если я сделаю:

  Dim LValue As String LValue = Choose(Application.RandBetween(1, 4), a, b, c, d) [A1] = LValue 

Тогда все, что возвращается, – это значение, а A1 имеет формулу внутри.

Есть идеи?

Обновить:

Спасибо вам за ваши предложения. Вдохновение ударило после ответа на ваши ответы, и мне нужна была формула:

 [A1] = "=choose(randbetween(1,4), " & a & "," & b & "," & c & "," & d & ")" 

Что отображает формулу в ячейке с изменением переменных. Переменные должны были быть строкой, а не диапазоном.

Во-первых, вам нужно удалить запятую после d as range, .
Затем вам нужно добавить двойные цитаты вокруг текста, который вы вставляете в формулу.

  [a1].Formula = "=choose(randbetween(1,4)," & Chr(34) & a & Chr(34) & "," & Chr(34) & b & Chr(34) & "," & Chr(34) & c & Chr(34) & "," & Chr(34) & d & Chr(34) & ")" 

Спасибо вам за ваши предложения. Вдохновение ударило после ответа на ваши ответы, и мне нужна была формула:

  [A1] = "=choose(randbetween(1,4), " & a & "," & b & "," & c & "," & d & ")" 

Что отображает формулу в ячейке с изменением переменных. Переменные должны были быть строкой, а не диапазоном.

  • Как настроить фокус на элемент за пределами текущего кадра?
  • Текст подсказки управления на двух мониторах?
  • Использование VBA для изменения ссылок на источник в листах вместо рабочей книги
  • Проблема с удалением динамически созданных текстовых полей в пользовательской форме
  • Заполнение ошибки пользовательской формы "несоответствие типа"
  • Программный выбор ListBox выбирает неправильный элемент
  • Как создать простую пользовательскую форму с флажками в VBA
  • Флажок Excel Userform по имени
  • Excel Userform с текстовым полем, как переключать значения в диапазоне текстового поля
  • Элементы управления пользовательской формой Excel VBA
  • Найти местоположение ячейки на основе значения, а затем сделать что-то - User Forms VBA Excel
  • Давайте будем гением компьютера.