Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоComboВсе проекты

Макросы в VBA. Добавление формулы ИНДЕКС в макрос

Cripton Профи (603), закрыт 1 год назад
Здравствуйте. Такой вопрос
Есть у меня "Лист 1" и "Лист 2" в Excel.
На первом листе в ячейку B5 нужно вывести по нажатию кнопки случайное значение из диапазона второго листа.
Формула выглядит так: Индекс ('Лист 2'B20:B25; Случмежду (1:5)). Она работает
Теперь нужно поместить ее в макрос.
Пробовал:
Private Sub CommandButton2_Click()
Range("B5").FormulaArray = "=INDEX('Лист 2'B26:B32, RANDBETWEEN(1:5))
End Sub
- ругается на первый аргумент индекса.
Пробовал:
Private Sub CommandButton2_Click()
With ThisWorkbook.Sheets
Sheets("Лист 1").Range("B5").FormulaArray = application.Index(Range("B26:B32"),(RANDBETWEEN(1, 6))
End With
End Sub
- выдает якобы синтаксическую ошибку.
Может кто нибудь подсказать?
Лучший ответ
Abram Pupkin Гений (80529) 1 год назад
Ошибки, которые на виду
'Лист 2' B20:B25; Случмежду (1:5))
Вы задаете диапазон B20:B25 (6 ячеек) а случайное
Случмежду (1:5)
работает на 5 чисел. В принципе это не ошибка, но В25 у вас никогда не выпадет

Попробуйте так :
Sub Cripton()
Dim ss As Byte
Randomize
ss = 20 * Int(Rnd) + 5
nn = Sheets("Лист1").Cells(ss, 2)
Sheets("Лист2").[B5] = nn
End Sub

* обратите внимание что "Лист1" и "Лист2" написаны без пробелов
Остальные ответы
Полосатый жираф Алик Искусственный Интеллект (291445) 1 год назад
А кто будет писать восклицательный знак после имени листа?!

Так что формула
Индекс ('Лист 2'B20:B25; Случмежду (1:5))
работать не может!

Да и Случмежду (1:5) - откуда двоеточие вместо точки с запятой? Это же разделение параметров!
CriptonПрофи (603) 1 год назад
Да, простите. Забыл про восклицательный знак. А вместо точки с запятой просто запятая. Работает.
Cripton Профи (603) Cripton, но вопрос все же остается) Проблема не с формулой. А с ее записью в макросе
Похожие вопросы