Генератор случайных чисел с заполнением строк выделенного фрагмента в 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

Комментарии

  1. Класс, спасибо. А как сделать так, чтобы производилась генерация случайного целого числа от опорнорго значения, а не дробного?

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Batch projects in Photoshop with JavaScript (Пакетная обработка проектов в Photoshop с помощью JavaScript)