Генеришите случајне бројеве помоћу ВБА РНД функције

Екцел ВБА случајни бројеви

До генерисати случајне бројеве у вба имамо уграђену функцију која се зове РНД. Потребан је само аргумент број да би се генерисали случајни бројеви, а ово је такође опциони параметар. Створиће случајне бројеве који су већи од 0 и мањи од 1.

Ово ради потпуно исто као и екцел функција „РАНД“. Као што сам рекао у функцији радног листа „РАНД“, и у ВБА можемо генерисати случајне бројеве који су већи од 0, али мањи од 1.

Сада погледајте синтаксу функције „РНД“.

[Број]: Аргумент можемо проследити на три начина.

  • Ако број проследимо као <0, сваки пут генерише исти случајни број.
  • Ако број додамо као 0, он ће поновити најновији број који је дао.
  • Ако проследимо број> 0, он вам стално даје различите случајне бројеве, тј. Следећи случајни број у низу.

Како генерисати насумичне бројеве помоћу ВБА кода?

Овде можете преузети овај ВБА образац случајних бројева Екцел - ВБА предложак случајних бројева Екцел

Пример # 1

Сада ћемо видети једноставан пример употребе функције „РНД“. Следите кораке у наставку да бисте сами написали ВБА код.

Корак 1: Прогласите променљиву као „Цео број“ у ВБА

Шифра:

 Суб Рнд_Екампле1 () Дим К Ас Интегер Енд Суб 

Корак 2: Сада доделите вредност променљивој од „к“ до „РНД”Функција.

Шифра:

 Суб Рнд_Екампле1 () Дим К Ас Интегер К = Рнд () Енд Суб 

Корак 3: Прикажите вредност коју је променљива „к“ вратила у оквир за поруке.

Шифра:

 Суб Рнд_Екампле1 () Дим К Ас Интегер К = Рнд () МсгБок К Енд Суб 

Сада покрените екцел макро и погледајте какав је резултат.

Погледајте шта се догодило.

Приказује резултат као 1 где функција „РНД“ може да врати само бројеве који су већи од нуле, али мањи од 1.

Сигурно размишљате о томе шта је овде погрешно.

Погрешна ствар је врста података коју смо доделили променљивој „к“.

Ако се осврнете на променљиву коју смо прогласили, доделили смо тип података као Интегер. Будући да смо променљиву доделили Интегер, она може приказати само целе бројеве између -32768 и 32767.

Кад год РНД врати децимални број, ВБА претвара децимални број у најближи цели број, тј. 1.

Дакле, да би формула правилно функционисала, променљиву прогласите „Доубле”.

„Доубле“ је тип података у ВБА који може садржати децималне вредности.

Шифра:

 Суб Рнд_Екампле1 () Дим К Ас Доубле К = Рнд () МсгБок К Енд Суб 

Сада код и погледајте какав је резултат.

Кликните на ок и покрените још једном и погледајте какав је резултат.

Овог пута смо добили другачији резултат. Будући да је „РНД“ у својој природи променљива функција, он репродукује различите резултате сваки пут када извршите код.

Пример # 2 - Добијте сваки случајни број сваки пут

Као што смо видели у претходном примеру, функција „РНД“ репродукује резултат сваки пут када извршимо код. Да бисмо изнова и изнова добили исти случајни број, морамо аргумент предати као нулу.

Шифра:

 Суб Рнд_Екампле2 () Дим К Ас Доубле К = Рнд (0) МсгБок К Енд Суб 

Ово ће произвести исти број изнова и изнова када извршимо код.

Пример # 3 - Генерисање целог случајног броја

Такође можемо генерисати читаве бројеве користећи другу ВБА функцију или друге улазне бројеве. За пример погледајте доњи код.

Шифра:

 Суб Рнд_Екампле3 () Дим К Ас Доубле К = 1 + Рнд * 100 МсгБок К Енд Суб 

Овај код ће генерирати случајне цијеле бројеве с децималним зарезима сваки пут кад извршимо код.

Ако гледате целе бројеве без децималних зареза, онда можемо користити доњи код.

Шифра:

 Суб Рнд_Екампле3 () Дим К Ас Доубле К = ЦИнт (1 + Рнд * 100) МсгБок К Енд Суб 

Ово ће наставити да генерише целе бројеве од 1 до 100.