Public Sub Randomizer() Dim sourcRng As Range Dim MyRndVal As Integer Set sourcRng = [A1:A10] 'Тут укажите нужный Вам диапазон. Do Randomize MyRndVal = Int((sourcRng.Count * Rnd) + 1) y = MsgBox(sourcRng.Cells(MyRndVal).Text, vbRetryCancel) If y = 2 Then Exit Do Loop End Sub
[/vba]
Например, так:
[vba]
Код
Public Sub Randomizer() Dim sourcRng As Range Dim MyRndVal As Integer Set sourcRng = [A1:A10] 'Тут укажите нужный Вам диапазон. Do Randomize MyRndVal = Int((sourcRng.Count * Rnd) + 1) y = MsgBox(sourcRng.Cells(MyRndVal).Text, vbRetryCancel) If y = 2 Then Exit Do Loop End Sub
Из кокого диапозона? Приложите файл и конкретнее объясните что Вам нужно
Очень надеюсь, что будет понятно...
Хочу сделать словарь на одном листе, а на другом листе тренировку слов.. Из первых 100 слов надо выбрать 25 рандомных и перенести их на следующий лист вместе с переводом, но перевод поместить в скрытый столбец и рядом сделать столбец для ввода. Далее настроить условное форматирование на правильность написания. Хочу сделать это по блокам из 100 слов, как одни зазубрю, удалить и вписать следующие
Из кокого диапозона? Приложите файл и конкретнее объясните что Вам нужно
Очень надеюсь, что будет понятно...
Хочу сделать словарь на одном листе, а на другом листе тренировку слов.. Из первых 100 слов надо выбрать 25 рандомных и перенести их на следующий лист вместе с переводом, но перевод поместить в скрытый столбец и рядом сделать столбец для ввода. Далее настроить условное форматирование на правильность написания. Хочу сделать это по блокам из 100 слов, как одни зазубрю, удалить и вписать следующиеNikitka
Хорошая идея для того чтоб основы VBA изучить, пока сделаешь, как раз и VBA освоишь, а потом и иностранные языки "щёлкать" начнёшь с помощью, своего-же тренажера. Задача реально решаемая. "гугл в помощь". Но тут на вопросы отвечают а у Вас проектное задание, это вряд-ли тут за Вас кто-то делать будет, разве что за деньги.[offtop]Я и сам когда-то с чего-то подобного начинал VBA осваивать.
Хорошая идея для того чтоб основы VBA изучить, пока сделаешь, как раз и VBA освоишь, а потом и иностранные языки "щёлкать" начнёшь с помощью, своего-же тренажера. Задача реально решаемая. "гугл в помощь". Но тут на вопросы отвечают а у Вас проектное задание, это вряд-ли тут за Вас кто-то делать будет, разве что за деньги.[offtop]Я и сам когда-то с чего-то подобного начинал VBA осваивать.al-Ex
Сообщение отредактировал al-Ex - Пятница, 20.10.2017, 16:18
Sub getWords() Dim sh1 As Worksheet, sh2 As Worksheet, dic As Object Dim lr&, iRnd%
Set sh1 = ThisWorkbook.Sheets(1) Set sh2 = ThisWorkbook.Sheets(2) Set dic = CreateObject("scripting.dictionary") With sh1 lr = .Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To lr iRnd = WorksheetFunction.RandBetween(2, 100) dic(Trim(.Cells(iRnd, 2))) = .Cells(iRnd, 3) If dic.Count = 25 Then Exit For Next i End With With sh2 lr = .Cells(Rows.Count, 2).End(xlUp).Row .[b2].Resize(lr - 1, 3).ClearContents .[b2].Resize(dic.Count) = Application.Transpose(dic.keys) .[d2].Resize(dic.Count) = Application.Transpose(dic.items) End With End Sub
[/vba]
Nikitka, здравствуйте, так подойдет? [vba]
Код
Sub getWords() Dim sh1 As Worksheet, sh2 As Worksheet, dic As Object Dim lr&, iRnd%
Set sh1 = ThisWorkbook.Sheets(1) Set sh2 = ThisWorkbook.Sheets(2) Set dic = CreateObject("scripting.dictionary") With sh1 lr = .Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To lr iRnd = WorksheetFunction.RandBetween(2, 100) dic(Trim(.Cells(iRnd, 2))) = .Cells(iRnd, 3) If dic.Count = 25 Then Exit For Next i End With With sh2 lr = .Cells(Rows.Count, 2).End(xlUp).Row .[b2].Resize(lr - 1, 3).ClearContents .[b2].Resize(dic.Count) = Application.Transpose(dic.keys) .[d2].Resize(dic.Count) = Application.Transpose(dic.items) End With End Sub