Генерация целых чисел в ячейке - VBA

Узнай цену своей работы

Формулировка задачи:

Приветствую, уважаемые программисты! Помогите, пожалуйста написать код для макроса в MSE.
Листинг программы
  1. Sub GetRandom()
  2. Randomize
  3. ThisWorkbook.Worksheets("Лист1").Range("A1").Value = Rnd * 50 - 20
  4. End Sub
Пишу такой код, а рандом выдает и дробные, и отрицательные числа, а мне надо, чтобы выдавались значения типа Byte, например. Кто поможет помочь и написать нормальный код?

Решение задачи: «Генерация целых чисел в ячейке»

textual
Листинг программы
  1. Sub GetRandom()
  2. Dim chgRange As Range, tstRange As Range, c As Range
  3. Dim bestNum() As Long, num() As Long, i&, j&, bestCrit&
  4.   Set chgRange = Range("B10,B15,B22,B25,B32,B20,B7")      'изменяемые ячейки
  5.  Set tstRange = Range("L7")                              'критерий (чем больше, тем лучше)
  6.  ReDim num(1 To chgRange.Count)
  7.   Application.Calculation = xlCalculationManual
  8.   Application.ScreenUpdating = False
  9.   Randomize
  10.   For i = 1 To 10000                                      'число повторов
  11.    j = 0
  12.     For Each c In chgRange
  13.       j = j + 1
  14.       num(j) = Int(21 + Rnd * 30)                         'диапазон случайных - от 21 до 50
  15.      c = num(j)
  16.     Next
  17.     ActiveSheet.Calculate
  18.     If tstRange > bestCrit Then
  19.       bestNum = num
  20.       bestCrit = tstRange
  21.       If bestCrit = 28 Then Exit For
  22.     End If
  23.   Next
  24.   j = 0
  25.   For Each c In chgRange
  26.     j = j + 1
  27.     c = bestNum(j)
  28.   Next
  29.   Application.Calculation = xlCalculationAutomatic
  30.   Application.ScreenUpdating = True
  31. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы