Я пытаюсь создать макрос, который будет выбирать случайную ячейку из заданного диапазона, копировать её в другую ячейку + выводить содержимое выбранной ячейки через MsgBox. Какие исходные данные:
-есть Лист1 и Лист2; -на Листе1 находится параметр "Выбранное событие". Для примера пусть данные будут появляться в ячейке B3; -на Листе2 находится список возможных событий. Для примера пусть это будет диапазон B3:B12.
Мне, нужно, чтобы при активации макроса:
1) случайно выбиралась ячейка из диапазона B3:B12 на Листе2; 2) текстовое значение случайно выбранной ячейки копировалось в выделенную ячейку из диапазона B3:B12 на Листе1; 3) через MsgBox выводилось текстовое значение случайно выбранной ячейки
При повторном активации макроса - нужно, чтобы пункты 1),2),3) выполнялись заново.
Пока что мой макрос не работает, и выглядит он так:
[vba]
Код
Sub test() For Each cell In Intersect(Selection, Range("B3:12")) With cell .Formula = "=INDIRECT( ADDRESS( ROW(Лист2!RC) + RANDBETWEEN(0, ROWS(Лист2!RC:R[9]C)-1), COLUMN(Лист2!RC) ))" .Value = .Value End With MsgBox = "Здесь должен отобразиться текст случайно выбранного события" End Sub
[/vba]
Помогите пожалуйста с макросом. Какой макрос должен получиться в итоге?
Добрый вечер!
Я пытаюсь создать макрос, который будет выбирать случайную ячейку из заданного диапазона, копировать её в другую ячейку + выводить содержимое выбранной ячейки через MsgBox. Какие исходные данные:
-есть Лист1 и Лист2; -на Листе1 находится параметр "Выбранное событие". Для примера пусть данные будут появляться в ячейке B3; -на Листе2 находится список возможных событий. Для примера пусть это будет диапазон B3:B12.
Мне, нужно, чтобы при активации макроса:
1) случайно выбиралась ячейка из диапазона B3:B12 на Листе2; 2) текстовое значение случайно выбранной ячейки копировалось в выделенную ячейку из диапазона B3:B12 на Листе1; 3) через MsgBox выводилось текстовое значение случайно выбранной ячейки
При повторном активации макроса - нужно, чтобы пункты 1),2),3) выполнялись заново.
Пока что мой макрос не работает, и выглядит он так:
[vba]
Код
Sub test() For Each cell In Intersect(Selection, Range("B3:12")) With cell .Formula = "=INDIRECT( ADDRESS( ROW(Лист2!RC) + RANDBETWEEN(0, ROWS(Лист2!RC:R[9]C)-1), COLUMN(Лист2!RC) ))" .Value = .Value End With MsgBox = "Здесь должен отобразиться текст случайно выбранного события" End Sub
[/vba]
Помогите пожалуйста с макросом. Какой макрос должен получиться в итоге?javzier987
ну то что вы не поняли, как работает часть конструкции - это факт. Обрабатывается набор выделенных ячеек, которые попадают в диапазон Range("B3:12") а не одна ячейка. если нужна только одна, то это скорее всего ActiveCell Далее, нет смысла использовать формулы листа, как и в том примере. [vba]
Код
Sub test() If Not Intersect(ActiveCell, Range("B3:B12")) Is Nothing Then With Worksheets("Лист2").Range("b3:b12") Randomize ActiveCell = .Cells(Rnd() * (.Count) + 1) End With MsgBox ActiveCell End If End Sub
[/vba]
ну то что вы не поняли, как работает часть конструкции - это факт. Обрабатывается набор выделенных ячеек, которые попадают в диапазон Range("B3:12") а не одна ячейка. если нужна только одна, то это скорее всего ActiveCell Далее, нет смысла использовать формулы листа, как и в том примере. [vba]
Код
Sub test() If Not Intersect(ActiveCell, Range("B3:B12")) Is Nothing Then With Worksheets("Лист2").Range("b3:b12") Randomize ActiveCell = .Cells(Rnd() * (.Count) + 1) End With MsgBox ActiveCell End If End Sub
bmv98rus, не судите строго. Я совсем "зелёный" в этом деле - мне всё это еще изучать и изучать. И спасибо большое за помощь - уже второй раз за вечер
bmv98rus, не судите строго. Я совсем "зелёный" в этом деле - мне всё это еще изучать и изучать. И спасибо большое за помощь - уже второй раз за вечер javzier987