Генератор случайных чисел с заполнением строк выделенного фрагмента в MS Word
Представляю Вашему вниманию VBA макрос для заполнения выделенного фрагмента в MS Word случайными числами в пределах заданного значения
Public Sub FillTablewithRandomNumbers()
Dim a As String
a = InputBox("Введите величину напряжения под нагрузкой для элемента/блока, В (целую часть от дробной отделять запятой!)")
Dim rng As Range, SelEnd As Long, counter As Long
Dim PrevPos As Long
'1. Запись в переменную конца выделения.
' С переменной быстрее работать, чем использовать объекты.
SelEnd = Selection.End
'2. Присваиваем выделенному фрагменту имя "rng".
Set rng = Selection.Range
'3. Превращаем выделенный фрагмент в курсор (аналогично, как при выделенном фрагменте
' нажать клавишу "стрелка влево").
rng.Collapse Direction:=wdCollapseStart
'4. Подсчёт строк.
' Цикл по всем строкам выделенного фрагмента.
Do
'1) В каждом витке цикла увеличиваем число в переменной "counter" на 1.
counter = counter + 1
'2) Запоминание текущей позиции, чтбы понять, произошёл ли переход на следующую строку.
' Это нужно, если выделен фрагмент в конце файла.
PrevPos = rng.Start
'3) Переход на следующую строку и присваиваем имя "rng" фрагменту, куда перешли.
Set rng = rng.GoToNext(wdGoToLine)
'4) Проверка, произошёл ли переход на следующую строку (то есть не достигнут
' ли конец файла).
If PrevPos = rng.Start Then
Exit Do
End If
'5) Проверка, не вышли ли мы за пределы выделенного фрагмента.
' Используется ">=", т.к. если в выделенном фрагменте последняя строка выделена целиком,
' то конец этой строки и начало следующей совпадают.
If rng.Start >= SelEnd Then
Exit Do
End If
Loop
Dim myRange As Range
Set myRange = Selection.Range
Selection.Cut
For i = 1 To counter
x = Rnd()
x = Round(Rnd / 6 + a, 2)
Selection.Text = x
Selection.MoveDown Unit:=wdLine, Count:=1
Next i
End Sub
Класс, спасибо. А как сделать так, чтобы производилась генерация случайного целого числа от опорнорго значения, а не дробного?
ОтветитьУдалитьНе понял вопроса?
Удалить